String username=request.getParameter("username"); String password=request.getParameter("password"); //获取表单提交的数据 if (username.isEmpty()) { request.setAttribute("error","请输入用户名");return "register"; } if (password.isEmpty()) { request.setAttribute("error","请输入用户名");return "register"; }
时间: 2023-11-17 14:05:38 浏览: 66
你的代码已经实现了判断前端传回的属性是否为空的功能,但是在第二个判断条件中,错误信息应该是 "请输入密码" 而不是 "请输入用户名"。修改后的代码如下:
```java
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.isEmpty()) {
request.setAttribute("error", "请输入用户名");
return "register";
}
if (password.isEmpty()) {
request.setAttribute("error", "请输入密码");
return "register";
}
```
上述代码首先通过 `request.getParameter()` 方法获取前端传回的用户名和密码。然后使用 `isEmpty()` 方法判断属性是否为空字符串。如果用户名或密码为空,将错误信息添加到请求的属性中,并返回到注册页面。
注意,这段代码是在使用Servlet开发Web应用时的一种实现方式。如果你在使用Spring MVC框架,可以通过在Controller层使用`@RequestParam`注解来获取表单提交的数据,并进行非空判断。具体实现方式可以参考我之前给出的示例代码。
相关问题
private void login() { String username = request.getParameter("username"); String password = request.getParameter("password"); String usertype = request.getParameter("usertype"); String action = request.getParameter("action"); String validcode=(String)request.getSession().getAttribute("validcode"); String inputvalidcode=request.getParameter("validcode"); System.out.println("验证码="+validcode); if (usertype != null && usertype.equals("0")) { Users u = (Users) DALBase.load("users", " where username='" + username + "' and password='" + password + "'"); if (u != null) { HttpSession session = request.getSession(); session.setAttribute("adminuser", u); try { response.sendRedirect(SystemParam.getSiteRoot() + "/admin/index.jsp"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { // 分发 dispatchParams(request, response); request.setAttribute("errmsg",MessageFormat.format("< img src=\"{0}/admin/images/icon_wrong.png\"/>用户与密码不匹配",SystemParam.getSiteRoot())); System.out.println("系统用户登录失败"); try { request.getRequestDispatcher( "/admin/login.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }解释每一行代码
这段代码是一个 Java Servlet 中的方法,用于实现用户登录功能。下面是每一行代码的解释:
```
private void login() {
```
定义了一个名为 login 的方法,该方法为私有方法,不能从类外直接访问。
```
String username = request.getParameter("username");
String password = request.getParameter("password");
String usertype = request.getParameter("usertype");
String action = request.getParameter("action");
String validcode=(String)request.getSession().getAttribute("validcode");
String inputvalidcode=request.getParameter("validcode");
```
获取用户提交的表单数据,包括用户名、密码、用户类型、动作和验证码等。
```
System.out.println("验证码="+validcode);
```
输出验证码,用于调试。
```
if (usertype != null && usertype.equals("0")) {
```
判断用户类型是否为管理员。
```
Users u = (Users) DALBase.load("users", " where username='" + username + "' and password='" + password + "'");
```
调用 DALBase.load() 方法查询数据库,根据用户名和密码查找对应的用户信息。
```
if (u != null) {
HttpSession session = request.getSession();
session.setAttribute("adminuser", u);
try {
response.sendRedirect(SystemParam.getSiteRoot() + "/admin/index.jsp");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
```
如果用户信息存在,则将用户信息存入 session 中,并重定向到管理后台首页;否则返回登录界面并显示错误信息。
```
dispatchParams(request, response);
request.setAttribute("errmsg",MessageFormat.format("< img src=\"{0}/admin/images/icon_wrong.png\"/>用户与密码不匹配",SystemParam.getSiteRoot()));
System.out.println("系统用户登录失败");
try {
request.getRequestDispatcher( "/admin/login.jsp").forward(request, response);
} catch (ServletException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
```
在返回登录界面时,使用 dispatchParams() 方法将表单数据传递回登录页面,同时设置错误信息并输出到控制台。最后使用 request.getRequestDispatcher().forward() 方法将请求转发到登录页面。
public String userLogin(@RequestParam("username") String username,@RequestParam("password") String password,@RequestParam("character") String character, HttpServletRequest request, HttpServletResponse response,HttpSession session) { //登录方法 String username=request.getParameter("username"); String password=request.getParameter("password"); String character=request.getParameter("character"); if (username.isEmpty()) { request.setAttribute("error","请输入用户名");return "register";} if (password.isEmpty()) { request.setAttribute("error","请输入密码");return "register";} if (character.isEmpty()) { request.setAttribute("error","请勾选身份");return "register";}
你的代码是一个用于处理用户登录的方法。在方法参数上,你使用了 `@RequestParam` 注解来接收前端传递的 `username`、`password` 和 `character` 参数,并使用 `HttpServletRequest`、`HttpServletResponse` 和 `HttpSession` 对象来处理请求和会话相关的操作。
然后,你又使用了 `request.getParameter()` 方法来获取表单提交的数据。这部分代码是多余的,因为你已经在方法参数上使用了 `@RequestParam` 注解来接收这些参数,不再需要再次获取。
接下来,你使用了 `username.isEmpty()`、`password.isEmpty()` 和 `character.isEmpty()` 来判断用户名、密码和身份是否为空字符串,并通过 `request.setAttribute()` 方法将错误信息存储在request对象中,然后返回 "register" 字符串来指示注册页面。
总体来说,你的代码逻辑是正确的,但仍然建议做一些额外的验证和处理,例如对密码进行加密、验证用户名和密码是否正确等。此外,建议在登录成功后跳转到其他页面,而不是返回 "register" 字符串。
相关推荐
![sql](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; @WebServlet(name = "registerServlet", value = "/registerServlet") public class registerServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setHeader("Content-Type","text/html;charset=UTF-8");//设置浏览器编码为utf-8,防止出现中文乱码 //接收前端表单输入的用户名和密码 String username = request.getParameter("Username"); String userPassword = request.getParameter("UserPassword"); //创建cookie,并将上文接收的用户名和密码存入cookie中 Cookie cookie=new Cookie(userPassword,username); cookie.setMaxAge(60*10);//设置cookie存活时间为10分钟 //发送cookie至客户端,并跳转至注册成功页面 response.addCookie(cookie); String massage="<meta http-equiv='refresh' content='3;url=/Cookie_war_exploded/Login.jsp'>三秒后跳转到登陆页面,如果没有跳转,请点击跳转按钮";//实现三秒之后自动跳转功能。 request.setAttribute("massage",massage); request.getRequestDispatcher("/registerVictory.jsp").forward(request,response); } }
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
<% //连接数据库 String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/votedb?serverTimezone=UTC&characterEncoding=UTF-8"; String username = "root"; String password = "123456"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, username, password); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM vote"); while(rs.next()){ String title = rs.getString("title"); %> <input type="radio" name="option" value="<%=title%>"><%=title%>
<% } } catch (Exception e) { e.printStackTrace(); } finally { //关闭连接 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } %> 提交投票选中后数据库数据变化
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)