springmvc-annotation注解式开发(表单封装)

来源:互联网 发布:淘宝上买steam游戏商家 编辑:程序博客网 时间:2024/05/20 16:12

实现功能:登录页面并跳转。

程序遇到的问题:表单登录中文乱码问题,显示参数问题

注解:

@Component

@Service:Service层

@Repository:Dao

@Controller:springmvc处理器上


配置文件注册需要Context约束,aop jar包,处理器不再需要Controller接口或者继承相关类。


com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
spring-aop-4.3.6.RELEASE.jar
spring-beans-4.3.6.RELEASE.jar
spring-context-4.3.6.RELEASE.jar
spring-context-support-4.3.6.RELEASE.jar
spring-core-4.3.6.RELEASE.jar
spring-expression-4.3.6.RELEASE.jar
spring-web-4.3.6.RELEASE.jar
spring-webmvc-4.3.6.RELEASE.jar


1.定义beans类,为登录页面做准备

package com.abc.beans;


public class Student {


private String name;
private int age;
private School school;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

public School getSchool() {
return school;
}
public void setSchool(School school) {
this.school = school;
}
public Student(String name, int age, School school) {
super();
this.name = name;
this.age = age;
this.school = school;
}

public Student() {
super();
// TODO Auto-generated constructor stub
}

@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
}


}

package com.abc.beans;


public class School {


private String sname;
private String schoolAddress;


public School() {
super();
// TODO Auto-generated constructor stub
}




public School(String sname, String schoolAddress) {
super();
this.sname = sname;
this.schoolAddress = schoolAddress;
}




public String getSname() {
return sname;
}




public void setSname(String sname) {
this.sname = sname;
}




public String getSchoolAddress() {
return schoolAddress;
}




public void setSchoolAddress(String schoolAddress) {
this.schoolAddress = schoolAddress;
}




@Override
public String toString() {
return "School [sname=" + sname + ", schoolAddress=" + schoolAddress + "]";
}

}


2.完成index.jsp页面

<%@ 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>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/some/sixth.do" method="POST">
姓名<input type="text" name="name"/><br>
年龄<input type="text" name="age"/><br>
学校<input type="text" name="school.sname" /><br>
校址<input type="text" name="school.schoolAddress" /><br>
<input type="submit" value="提交"/>
</form>

</body>
</html>


3.定义handlers完成注解是开发;

package com.abc.handlers;


import java.util.Map;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;


import com.abc.beans.Student;




@Controller  //处理器
@RequestMapping("/some")       //请求体参数前加了some路径

public class SomeHandler {


@RequestMapping("/first.do")
public ModelAndView doFirst(HttpServletRequest request, HttpServletResponse response)  {
ModelAndView mv= new ModelAndView();
mv.addObject("message","hello SpringMvc");
//相当于request.setAttribute("message", "heloomvc");
mv.setViewName("/WEB-INF/jsp/welcome.jsp");
return mv;
}


@RequestMapping("/second.do")
public ModelAndView doSecond(String name,int age, Map<String, Object> map) {

map.put("name", name);
map.put("age", age);
return new ModelAndView("/WEB-INF/jsp/welcome.jsp");
}
//@RequestParam用于校正参数
@RequestMapping("/third.do")
    public ModelAndView doThird(@RequestParam Map<String, Object> map, HttpServletRequest request) {
String name = (String) map.get("name");
String age = (String) map.get("age");
request.setAttribute("name", name);
request.setAttribute("age", age);

return new ModelAndView("/WEB-INF/jsp/welcome.jsp");

}
@RequestMapping("/fifth.do")
    public ModelAndView doFifth(Student student) {

return new ModelAndView("/WEB-INF/jsp/welcome.jsp");

}
@RequestMapping("/sixth.do")
    public ModelAndView doSixth(Student student) {    
       要实现的目标方法

return new ModelAndView("/WEB-INF/jsp/welcome.jsp");

}


}

4.welcome.jsp跳转页面   实现显示请求参数功能

<%@ 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>Insert title here</title>
</head>
<body>
      welcome page <br>
        ${message} <br>
        ${requestScope.message}<br>
        <hr>                                                       jsp 之所以能显示出来,他能满足el表达式四大域中的requestScope
        ${name }<br>
        ${age }<br>
        ${requestScope.student }<br>

</body>
</html>


5.注册注解扫描器

<?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: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.abc.handlers"/>
</beans>


6.解决中文乱码问题,在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">
 
  <filter >
 <filter-name>CharacterEncodingFilter</filter-name>
  
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
          </init-param>
 </filter> 
 <filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 
 </filter-mapping><!-- 注册编码监听器解决中文乱码问题 -->
   
  

  <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:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>














阅读全文
0 0
原创粉丝点击