1.在Web-INF/jsp新建index.jsp,reg.jsp,login.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>reg.jsp</title>
</head>
<body>
Reg !
<hr>
<form action="user!getReg.action" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
确认密码:<input type="password" name="con_passward"><br>
<input
type="submit" value="注册">
</form>
</body>
</html>
提交到user!getReg.action
<%@ 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>login.jsp</title>
</head>
<body>
Login !
<hr>
<h4>${msg }欢迎你 ${username }</h4>
<form action="user!toIndex.action" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="passward"><br>
<input
type="submit">
</form>
</body>
</html>
跳转到user!toIndex.action
<%@ 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>index.jsp</title>
</head>
<body>
Hello,Index !<br>
<hr>
</body>
</html>
2,使用一个bean接收注册信息,新建User.java
public class User {
private String username;
private String password;
public User() {
// TODO Auto-generated constructor stub
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
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;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
3.在action包中新建UserAction处理jsp
import com.opensymphony.xwork2.ActionSupport;
import com.qishui.bean.User;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
//第一种方式,还可以使用域模型,把数据封装到user
//后台向前台传值
private String username;
private String password;
private String con_password;
// 前台,向后台
private String msg;
// 接受参数
public String getReg() {
User user = new User(username, password);
System.out.println(user);
msg = "注册成功!";//当填完注册信息提交时,msg被赋值。
return "toLogin";//在struts.xml中指向相关的jsp
}
public String toLogin() {
System.out.println("toLogin");
return "toLogin";
}
public String toReg() {
System.out.println("toReg");
return "toReg";
}
public String toIndex() {
System.out.println("toIndex");
return "index";
}
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;
}
public String getCon_password() {
return con_password;
}
public void setCon_password(String con_password) {
this.con_password = con_password;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
4.在struts.xml中配置路径
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 动态访问 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!-- http://localhost:8888/Struts/user!toLogin.action -->
<!-- 配置UserAction中的方法,以user开头格式如上 -->
<action name="user" class="com.qishui.action.UserAction">
<result name="toLogin">/WEB-INF/jsp/login.jsp</result>
<result name="toReg">/WEB-INF/jsp/reg.jsp</result>
<result name="index">/WEB-INF/jsp/index.jsp</result>
</action>
</package>
</struts>
5.访问效果
//以下的是采用不同方式对action的解析
6.使用不同方式相同效果
在UserAction.java中使用user包装
import com.opensymphony.xwork2.ActionSupport;
import com.qishui.bean.User;
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
// 使用域模型,把数据封装到user
// 后台向前台传值
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
private String con_password;
// 前台,向后台
private String msg;
// 接受参数
public String getReg() {
System.out.println(user);
msg = "注册成功!";// 当填完注册信息提交时,msg被赋值。
return "toLogin";// 在struts.xml中指向相关的jsp
}
public String toLogin() {
System.out.println("toLogin");
return "toLogin";
}
public String toReg() {
System.out.println("toReg");
return "toReg";
}
public String toIndex() {
System.out.println("toIndex");
return "index";
}
public String getCon_password() {
return con_password;
}
public void setCon_password(String con_password) {
this.con_password = con_password;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
在reg.jsp中使用user.username和user.password对于在User中没有的属于不能使用域模型,不用改变,在UserAction中定义,并set,get方法即可。
<%@ 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>reg</title>
</head>
<body>
Reg !
<hr>
<form action="user!getReg.action" method="get">
用户名:<input type="text" name="user.username"><br>
密码:<input type="password" name="user.password"><br>
确认密码:<input type="password" name="con_passward"><br>
<input
type="submit" value="注册">
</form>
</body>
</html>
7.设置静态访问路径
a,配置所有
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 静态模式 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="struts-default">
<action name="user*" class="com.qishui.action.UserAction"
method="{1}">
<result name="toLogin">/WEB-INF/jsp/login.jsp</result>
<result name="toReg">/WEB-INF/jsp/reg.jsp</result>
<result name="index">/WEB-INF/jsp/index.jsp</result>
</action>
</package>
</struts>
i.将struts.devMode设置为false,对于他们相应的访问路径
http://localhost:8888/Struts/usertoReg.action
http://localhost:8888/Struts/usertoLogin.action
http://localhost:8888/Struts/usertoIndex.action
其中action中name表示一种样式,在访问路径前的样式,‘*’表示匹配所有,class表示要处理action的完整类名,method表示name中第一个所接过的第一个参数,如此method=“{1}{2}”表示可以接两个参数,而它的参数正是在result中匹配,而result中的name值正是UserAction中各个方法中返回的字符串!
ii:相应的在提交表单的时候action也要作出相应的改变
//在UserAction中使用的是域模型,相应的name,password也添加name.属性值
<%@ 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>login.jsp</title>
</head>
<body>
Login !
<hr>
<h4>${msg }欢迎你 ${user.username }</h4>
<form action="usertoIndex.action" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="passward"><br>
<input
type="submit">
</form>
</body>
</html>
<%@ 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>reg</title>
</head>
<body>
Reg !
<hr>
<form action="usertoLogin.action" method="get">
用户名:<input type="text" name="user.username"><br>
密码:<input type="password" name="user.password"><br>
确认密码:<input type="password" name="con_passward"><br>
<input
type="submit" value="注册">
</form>
</body>
</html>
b.单个配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 静态模式 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="struts-default">
<action name="usertoLogin" class="com.qishui.action.UserAction" method="toLogin">
<result name="toLogin">/WEB-INF/jsp/login.jsp</result>
</action>
<action
name="usertoReg" class="com.qishui.action.UserAction" method="toReg">
<result name="toReg">/WEB-INF/jsp/reg.jsp</result>
</action>
<action
name="usertoIndex" class="com.qishui.action.UserAction" method="toIndex">
<result name="index">/WEB-INF/jsp/index.jsp</result>
</action>
</package>
</struts>
单个配置,没有相应规则,访问只要name.action即可,当然项目名之前肯定要加,其配置路径与上一个静态模式路径一致,所以在form中不需要改变action.
处理action方法如下,其中返回值查上面!
c.一般来说,不会采取在xml中设置jsp,而是采用注解方式,这就必须使用更多的jar包。