创建基于注解控制器的应用实现(注册和登录)
1.目录结构
2.常见的问题解决,主要解决 404问题
2.1 (404页面的出现),总的来说是路径不对
2.2 配置转发器时错误(这里报 500 init 错误)
2.3 结构路径不对而导致的 配置文件无法找到,请参考 文章头 给的 结构图
2.4 web.xml 文件配置不正确, 如发生代码错误,或者 xml头文件声明不正确 而报错404
2.5 jar包导入过多而重叠报错,此时报 500 init错误.
3.注解控制器的应用(后端代码固定的 登录和注册)
3.1 web.xml文件 , 导入jar 包(这里不在提醒)
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<!--部署DispatcherServlet-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
3.2 DispatcherServlet-servlet.xml 文件
<?xml version="1.0" encoding="UTF-8"?><!--注解 配置控制器 -->
<!-- 1. 配置扫描包-->
<context:component-scan base-package="com.dhl.backstage"/>
<!-- 2. 使用注解 配置处理映射-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<!-- 3. 配置适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--4.配置 资源视图解析器 (对本地视图的路径解析处理)-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--设置前缀-->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!--设置后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
3.3 Controller 文件
indexController
package com.dhl.backstage.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/index")
public class indexController {
@RequestMapping("login")
public String isLogin(){
return "login";
}
@RequestMapping("register")
public String isRegister(){
return "register";
}
}
UserController
package com.dhl.backstage.controller;
import com.dhl.backstage.domain.UserForm;
import com.dhl.backstage.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.text.Normalizer;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value = "register")
public String register(@ModelAttribute("user")UserForm user){
if(userService.register(user)){
return "login";
}else
return "register";
}
@RequestMapping(value = "login")
public String login(UserForm user){
if (userService.login(user)){
return "main";
}else
return "login";
}
}
3.4 Service and ServiceImpl 文件
package com.dhl.backstage.service;
import com.dhl.backstage.domain.UserForm;
public interface UserService {
public boolean login(UserForm user);
public boolean register(UserForm user);
}
package com.dhl.backstage.service.serviceImpl;
import com.dhl.backstage.domain.UserForm;
import com.dhl.backstage.service.UserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
@Override
public boolean login(UserForm user) {
if("dhl".equals(user.getUname()) && "123456".equals(user.getUpass()))
return true;
return false;
}
@Override
public boolean register(UserForm user) {
if("dhl".equals(user.getUname()) && "123456".equals(user.getUpass()))
return true;
return false;
}
}
3.5 实体类文件
package com.dhl.backstage.domain;
import org.springframework.stereotype.Component;
@Component
public class UserForm {
private String uname;
private String upass;
private String reupass;
@Override
public String toString() {
return "UserForm{" +
"uname='" + uname + '\'' +
", upass='" + upass + '\'' +
", reupass='" + reupass + '\'' +
'}';
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
public String getReupass() {
return reupass;
}
public void setReupass(String reupass) {
this.reupass = reupass;
}
}
3.6 映射文件
login.jsp
<%--
Created by IntelliJ IDEA.
User: DHL
Date: 2020/4/21
Time: 19:22
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/login" method="post">
姓名:<input name="uname">
密码:<input type="password" name="upass">
<input type="submit" value="登录">
</form>
</body>
</html>
register.jsp
<%--
Created by IntelliJ IDEA.
User: DHL
Date: 2020/4/21
Time: 19:22
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" method="post">
姓名:<input name="uname">
密码:<input type="password" name="upass">
确认密码:<input type="password" name="reupass">
<input type="submit" value="注册">
</form>
</body>
</html>
main.jsp
<%--
Created by IntelliJ IDEA.
User: DHL
Date: 2020/4/21
Time: 19:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Beyond</title>
</head>
<body>
欢迎访问该系统!
</body>
</html>
index.jsp (目录在web下的)
<%--
Created by IntelliJ IDEA.
User: DHL
Date: 2020/4/15
Time: 18:58
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
HELLO!
没注册的用户,请去 <a href="index/register">注册</a>
已经注册的用户,请<a href="index/login">登录</a>
</body>
</html>
4 目录介绍
5.效果图