您的位置:首页 > 编程语言 > Java开发

springMVC入门

2016-05-25 13:19 543 查看
一、需要的jar包



二、编写web.xml容器

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
<!--
注册web容器启动时负责加载spring mvc的中央控制器
DispatcherServlet
功能1 : DispatcherServlet初始化之后,根据其提供的名为contextConfigLocation初始化参数
加载spring-mvc的配置文件【ioc容器】
功能2 : 为spring-mvc设置其允许处理的请求格式
-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>com.etoak.util.MyDispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- /WEB-INF/[servlet-name]-servlet.xml -->
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


三、applicationContext.xml容器配置,配置为自动扫描
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 
<!--
请求解析器
spring-mvc为解析请求提供了两种请求解析器 :
字符请求解析器
HandlerMapping接口
实现类中提供了两个默认的请求解析器 :
BeanNameUrlHandlerMapping - 非注解环境
DefaultAnnotationHandlerMapping - 注解环境
字节请求解析器
MultipartResolver接口
解析完请求,获取表示请求的字符串 "/hello.do" 或者 "/hello"
-->
<context:component-scan base-package="com"/>

<!--
请求解析完毕之后,会在ioc容器中查找一个请求处理器处理 "/hello"
1 请求处理器   implements Controller
2 将处理器配置在ioc容器中 bean
@Controller
被该注解标注了之后,会自动实现Controller接口,成为spring-mvc请求处理器
-->

</beans>


四、覆盖中央处理器对编码格式进行规范

package com.etoak.util;

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

import org.springframework.web.servlet.DispatcherServlet;

public class MyDispatcherServlet extends DispatcherServlet {

@Override
protected void doService(HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
super.doService(request, response);
}

}


五、编写简单UserBean

package com.etoak.bean;

public class User {

private String loginname;
private String password;
public String getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

六、编写controller

package com.etoak.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

import com.etoak.bean.User;

/**
* 		业务逻辑对象 [请求处理器]
*   servlet - XxServlet   com.etoak.servlet
*   struts  - XxAction    com.etoak.action
*   spring-mvc - XxController  com.etoak.controller
*
*/

@Controller
@SessionAttributes({"address"})
public class HelloController {

/** 请求 "/hello" 和处理方法 hello() 之间的映射关系
*  @RequestMapping(path)
*  	该注解用于标注请求处理器中的一个方法
*  	使用被标注的方法处理path指向的请求
*/
@RequestMapping("/hello")
public String hello(){

System.out.println("处理客户端提交的hello.do请求");

/**
* 为客户端返回 'success.jsp'视图
* 		重定向  redirect
* 		转发     forward
*/
return "redirect:success.jsp";
// return "forward:/success.jsp";
}

/**
* 使用一个第三方的javaBean封装请求中的表单项
* 	表单项封装完毕之后,会将封装表单项的javaBean添加到request范围中
* *** spring-mvc提供了特殊的封装方式 :
* 		当提交请求中的表单项有且只有一个;并且该表单项的类型为基本数据类型或者String类型时
*     直接在处理请求方法的第一个参数中对表单项进行封装!
*/
@RequestMapping("/login")
public String login(User user , ModelMap map){

// 使用User类型的user封装当前请求中的表单项
String loginname = user.getLoginname();
/*try {
loginname = new String(loginname.getBytes("iso-8859-1") , "utf-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
System.out.println("loginname--"+loginname);
System.out.println("password--"+user.getPassword());

// List   request
String address = "趵突泉北路";
map.put("address", address);
/**
* 直接调用ModelMap.put(key,value)添加一条数据
* 	默认 将该数据存储在request范围中
*/

return "redirect:success.jsp";
}

@RequestMapping("/delUserById")  // id  1
public String delUserById(Integer id){
// 定义和表单项匹配的参数
System.out.println("id---"+id);
return "forward:success.jsp";
}

/*
@RequestMapping("/hello")
public ModelAndView hello2(){

//return
}
*/
}
七、编写index.jsp,login.jsp,success.jsp三个页面,分别为

(1)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>spring-mvc请求处理基本流程</title>
</head>

<body>
<a href="hello.do">helloworld</a>
</body>
</html>


(2)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>spring-mvc表单项封装</title>
</head>

<body>
<form action="login.do" method="post">
登录名:<input type="text" name="loginname"/><br/>
密码:<input type="password" name="loginname"/><br/>
<input type="submit" value="登录"/>
</form>

<a href="delUserById.do?id=1">删除</a>
</body>
</html>


(3)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>成功视图</title>
</head>

<body>
请求处理完毕!
获取loginname password值?
<%
String loginname = request.getParameter("loginname");
%>
${param.loginname }
<br/>
${requestScope.user.loginname }

${requestScope.address }

${sessionScope.address }
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: