1.首先在web.xml中配置spring的dispatcherServlet
<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*:context/applicationContext-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2.在spring配置文件applicationContext.xml中配置方法解析器
<!-- 方法解析器 -->
<bean id="methodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="method"></property>
<property name="defaultMethodName" value="add"></property>
</bean>
方法解析器使用ParameterMethodNameResolver,paramName指定的值用来决定执行action的哪个方法,比如:http://localhost:8080/springMVC/login.action?method=do_login,则执行action的do_login方法,defaultMethodName表示默认的执行方法。
3.配置控制器映射
<!-- 控制器映射 -->
<bean id="loginMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="login.action">loginAction</prop>
</props>
</property>
</bean>
4.配置控制器
<!-- 控制器 -->
<bean id="loginAction" class="com.demo.spring.action.UserAction">
<property name="methodNameResolver" ref="methodNameResolver"></property>
<property name="success" value="success.jsp"></property>
</bean>
5.UserAction.java
UserAction继承与MultiActionController,MultiActionController可以将多个行为合并在一个处理器里,这样可以把相关的功能组合在一起,MultiActionController的方法的第三个参数是要绑定的command,第三个参数指定是什么对象,MultiActionController就会给你绑定什么对象
package com.demo.spring.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import com.demo.spring.form.LoginForm;
public class UserAction extends MultiActionController {
private String success;
public void setSuccess(String success) {
this.success = success;
}
public ModelAndView user_login(HttpServletRequest request,HttpServletResponse response,LoginForm loginForm){
try {
String userName = new String(loginForm.getUserName().getBytes("iso-8859-1"), "utf-8");
String userPwd=new String(loginForm.getUserPwd().getBytes("iso-8859-1"),"utf-8");
if(userName!=null && userName.equals("admin") && userPwd!=null && userPwd.equals("admin")){
request.setAttribute("userName", userName);
request.setAttribute("userPwd", userPwd);
return new ModelAndView(this.success);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
6.LoginForm.java
数据绑定对象,很像struts1中的actonForm,它会自动把表单提交的数据绑定到该对象上
package com.demo.spring.form;
public class LoginForm {
private String userName;
private String userPwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
7.login.jsp 登录页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form name="myForm" method="post" action="login.action?method=user_login">
<table width="296" height="136" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2"><div align="center">登录窗口</div></td>
</tr>
<tr>
<td width="90"><div align="right">用户名:</div></td>
<td width="206"><input type="text" name="userName"></td>
</tr>
<tr>
<td><div align="right">密码:</div></td>
<td><input type="text" name="userPwd"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="重置">
</div></td>
</tr>
</table>
</form>
</body>
</html>
8.登录成功页面 success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'success.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
用户名:${requestScope.userName }<br/>
密码:${requestScope.userPwd }
</body>
</html>