Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在jsp中更新数据时出错_Java_Jsp_Servlets - Fatal编程技术网

Java 在jsp中更新数据时出错

Java 在jsp中更新数据时出错,java,jsp,servlets,Java,Jsp,Servlets,我正在尝试更新数据库中的数据,我有一个控制器servlet、DBhelper、用户类和update.jsp 这是控制器servlet import java.io.IOException; import java.sql.SQLException; import java.util.List; import javax.annotation.Resource; import javax.servlet.ServletException; import javax.servlet.annotati

我正在尝试更新数据库中的数据,我有一个控制器servlet、DBhelper、用户类和update.jsp

这是控制器servlet

import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import model.DBhelper;
import user.User;


/**
 * Servlet implementation class servletJsp
 */
@WebServlet("/controller")
public class Controller extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @Resource(name="")
    private DataSource dataSource;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String page;
        if(request.getParameterMap().containsKey("page")){
            page =request.getParameter("page");
        }else{
            page="index";
        }
        switch (page) {
        case "index":
            homepage(request,response);
            break;
        case "update":
            String username = request.getParameter("username"); 
            update(username, request,response);
            break;
        }   
    }

    private void update(String username, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        if(request.getParameterMap().containsKey("action")){
            if(request.getParameter("action").equals("submit")){

                String authority = request.getParameter("authority");
                User temp = new User(username,authority);
                try {
                    new DBhelper().update(temp,dataSource);
                } catch (SQLException e) {

                    e.printStackTrace();
                }
                request.setAttribute("message", "Record updated");
                request.getRequestDispatcher("message.jsp").forward(request, response);
            }
        }else{

            User user = null;

            try {
                user = new DBhelper().getUser(username,dataSource);
            } catch (SQLException e) {

                e.printStackTrace();
            }
           //set the attribute
           request.setAttribute("user", user);
           request.getRequestDispatcher("update.jsp").forward(request, response);
        }

        }
这是DBhelper

    public class DBhelper {

        private ResultSet users =null;

        public List<User> getUsers(DataSource dataSource) throws SQLException {

            Connection con=null;
            Statement st= null;
            List<User> userList = new ArrayList<>();

            try{
            con =dataSource.getConnection();
            st=con.createStatement();
            String query="select * from authorities";
            users= st.executeQuery(query);
            while(users.next()){
                String authority = users.getString("Authority");
                String username = users.getString("Username");
                User temp = new User(username, authority);
                userList.add(temp);
            }
            }catch(Exception e){

                e.printStackTrace();
                return userList;

            }finally{
                con.close();
                st.close();
            }
            return userList;
        }



    public User getUser(String username, DataSource dataSource) throws SQLException {
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        User user =null;
        try{

        conn = dataSource.getConnection();
        String query ="select from Authorities where Username=?";
        stmt = conn.prepareStatement(query);
        stmt.setString(1, username);
        rs = stmt.executeQuery();
        String authority=null;
        if(rs.next()){
            authority = rs.getString("authority");
        }
        user = new User(username, authority);
        }catch(Exception e){
            e.printStackTrace();
        }finally{
                conn.close();
                stmt.close();

        }
        return user;
    }

    public boolean update(User user, DataSource dataSource) throws SQLException {
        Connection conn = null;
        PreparedStatement stmt = null;

        try{
            conn = dataSource.getConnection();
            String Query = "update Authorities set Authority=? where Username=?";
            stmt = conn.prepareStatement(Query);
            stmt.setString(1, user.getUsername());
            stmt.setString(2, user.getAuthority());


            return stmt.execute();

        }finally{
                conn.close();
                stmt.close();
        }

    }
}
公共类DBhelper{
private ResultSet users=null;
公共列表getUsers(DataSource DataSource)引发SQLException{
连接con=null;
语句st=null;
List userList=new ArrayList();
试一试{
con=dataSource.getConnection();
st=con.createStatement();
String query=“从权限中选择*”;
用户=st.executeQuery(查询);
while(users.next()){
String authority=users.getString(“authority”);
字符串用户名=users.getString(“用户名”);
用户临时=新用户(用户名、权限);
userList.add(temp);
}
}捕获(例外e){
e、 printStackTrace();
返回用户列表;
}最后{
con.close();
圣克洛斯();
}
返回用户列表;
}
公共用户getUser(字符串用户名,数据源数据源)抛出SQLException{
连接conn=null;
PreparedStatement stmt=null;
结果集rs=null;
User=null;
试一试{
conn=dataSource.getConnection();
String query=“从用户名=?”的权限中选择”;
stmt=conn.prepareStatement(查询);
stmt.setString(1,用户名);
rs=stmt.executeQuery();
字符串权限=null;
如果(rs.next()){
authority=rs.getString(“authority”);
}
用户=新用户(用户名、权限);
}捕获(例外e){
e、 printStackTrace();
}最后{
康涅狄格州关闭();
stmt.close();
}
返回用户;
}
公共布尔更新(用户、数据源、数据源)引发SQLException{
连接conn=null;
PreparedStatement stmt=null;
试一试{
conn=dataSource.getConnection();
String Query=“更新权限设置权限=?其中用户名=?”;
stmt=conn.prepareStatement(查询);
stmt.setString(1,user.getUsername());
stmt.setString(2,user.getAuthority());
返回stmt.execute();
}最后{
康涅狄格州关闭();
stmt.close();
}
}
}
以及更新jsp

<form action="${pageContext.request.contextPath}/Controller" >

<table>
<tbody>
<tr>
        <td><label>User name</label></td>  
        <td><input type="text" name="username" value="${user.Username }"></td>
</tr>
<tr>
        <td><label>Authority</label></td> 
        <td><input type="text" name="authority" value="${user.Authority }"><td>
</tr>

<tr>
<td><input type="submit" value="Update"></tr>
<tr>
<input type="hidden" name="page" value="update">
<input type="hidden" name="action" value="submit">
<input type="hidden" name="username" value="${user.Username }">
</tbody>
</table>

</form>

用户名
权威

有什么问题吗

问题是什么?当我尝试运行程序时,它会说请求的资源不可用。它会从哪个文件抛出错误?在控制器中,当我尝试在update.jsp中提交它时。它抛出了一个错误。@oma请在服务器控制台中添加您的问题的错误