Java 在jsp中更新数据时出错
我正在尝试更新数据库中的数据,我有一个控制器servlet、DBhelper、用户类和update.jsp 这是控制器servletJava 在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
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请在服务器控制台中添加您的问题的错误