该项目可以实现用户注册和登录。比较简单,没有用数据库。纯属是为了练习一下刚刚学的SpringMVC。
代码中我会有备注,供大家理解
最重要的是先配置,web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>SpringMvc01</display-name>
<!--主页-->
<welcome-file-list>
<welcome-file>/WEB-INF/jsp/index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<!--检索后缀是do的-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 使用注解的包,包括子集 -->
<context:component-scan base-package="com.xu"/>
<!-- 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp"></property>
</bean>
<!--上传文件这里没用到-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<property name="maxUploadSize" value="10000000"/>
</bean>
</beans>
这是项目结构
model包 User就用户名和密码就可以了
package com.xu.model;
public class User {
private int id;
private String userName;
private String password;
public User() {
}
public User(String userName, String password) {
this.userName = userName;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Controller
package com.xu.controller;
import javax.jms.Session;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.xu.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
//我没有用数据库所有用数组存
private static List<User> list=new ArrayList<>();
//用静态块的目的是只加载一次
static {
list.add(new User("xu","123"));
}
@RequestMapping("/login")
public ModelAndView login(HttpServletRequest request, HttpServletResponse response ) {
String userName = request.getParameter("userName");
String password = request.getParameter("password");
ModelAndView mav=new ModelAndView();
HttpSession session= request.getSession();
for(User u:list){
if(userName.equals(u.getUserName())&&password.equals(u.getPassword())){
//用户登录后就弄进session
session.setAttribute("currentUser",u);
mav.setViewName("success");
return mav;
}
}
mav.addObject("errorMsg","用户名或密码错误");
mav.setViewName("index");
return mav;
}
@RequestMapping("/register")
public ModelAndView register(HttpServletRequest request, HttpServletResponse response ){
String userName = request.getParameter("userName");
String password = request.getParameter("password");
ModelAndView mav=new ModelAndView();
User user=new User(userName,password);
list.add(user);
mav.setViewName("index");
return mav;
}
//登录界面点注册的跳转
@RequestMapping("/skipToRegister")
public ModelAndView skipToRegister(){
ModelAndView mav=new ModelAndView();
mav.setViewName("register");
return mav;
}
}
下面是JSP
index.jsp
<%--
Created by IntelliJ IDEA.
User: xu
Date: 2019/2/27
Time: 19:19
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录界面</title>
</head>
<body>
<%--获得后台得到的错误信息,用户名或密码错误--%>
${errorMsg}
一定要用${pageContext.request.contextPath},不然会有地址错误。可以在网页上的地址看出来多了user/
<form action="${pageContext.request.contextPath}/user/login.do" method="post">
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登录"> </td>
</tr>
</form>
<a href="${pageContext.request.contextPath}/user/skipToRegister.do">注册</a>
</body>
</html>
register.jsp
<%--
Created by IntelliJ IDEA.
User: xu
Date: 2019/2/27
Time: 19:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/register.do" method="post">
<tr>
<td>用户名:</td>
<td><input type="text" name="userName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="注册"> </td>
</tr>
</form>
</body>
</html>
success.jsp
<%--
Created by IntelliJ IDEA.
User: xu
Date: 2019/2/27
Time: 19:41
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>欢迎您${currentUser.userName}</h1>
</body>
</html>