7、通配符的使用
7.1 index.jsp
7.2 struts.xml
8、接收参数的三种方法
8.1 用Action的属性接收参数
8.1.1 index.jsp中超链接使用action属性接收参数
8.1.2 UserAction.java中接收
8.2 用DomainModel接收参数(最常用)
8.2.1 index.jsp
8.2.2 struts.xml
8.2.3 UserAction.java
8.2.4 User.java(新增文件)
8.3 用ModelDriven接收参数
8.3.1 index.jsp和第一种传值一样。
8.3.2 UserAction.java
9、中文乱码问题
10、简单数据校验
10.1 添加验证
10.2 处理反馈信息
10.3 struts.xml
7、通配符的使用
当类中方法的数量比较多时,方法中返回不同字符串,struts.xml中需要配置不同的
7.1 index.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<% String context = request.getContextPath(); %>
Insert title here
使用通配符,将配置量降到最低
添加学生
删除学生
不过,一定要遵守"约定优于配置"的原则
添加老师
删除老师
添加课程
删除课程
注:前两个超链接’Studentadd’、’Studentdelete’中’Student’后面的部分对应通配符.
7.2 struts.xml
/Student{1}_success.jsp
/{1}_{2}_success.jsp
注:①第一个action中,{1}
对应第一个通配符’*’,比如在index.jsp
中点击添加学生
,tomcat查询struts.xml
,其中*对应add
,{1}
相当于add
,动态拼接为字符串。
②第二个action中,’{1}’,’{2}’对应两个’*’,点击’index.jsp’中的删除老师
时,访问的action等价于
/Teacher_delete_success.jsp
8、接收参数的三种方法
8.1 用Action的属性接收参数
8.1.1 index.jsp中超链接使用action属性接收参数
8.1.2 UserAction.java中接收
package com.bjsxt.struts2.user.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private String name;
private int age;
public String add() {
System.out.println("name=" + name);
System.out.println("age=" + age);
return SUCCESS;
}
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;
}
}
8.2 用DomainModel接收参数(最常用)
与第一种相比,只是将属性封装到User类中,即model。
8.2.1 index.jsp
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Insert title here
使用Domain Model接收参数添加用户
8.2.2 struts.xml
/user_add_success.jsp
8.2.3 UserAction.java
package com.bjsxt.struts2.user.action;
import com.bjsxt.struts2.user.model.User;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private User user;//传值时不需要生成user对象,struts会自动调用构造器
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
8.2.4 User.java(新增文件)
package com.bjsxt.struts2.user.model;
public class User {
private String name;
private int age;
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;
}
}
8.3 用ModelDriven接收参数
8.3.1 index.jsp和第一种传值一样。
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
Insert title here
使用ModelDriven接收参数添加用户
8.3.2 UserAction.java
package com.bjsxt.struts2.user.action;
import com.bjsxt.struts2.user.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven{
//需要自己手动创建对象
private User user = new User();
public String add() {
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
@Override
public User getModel() {
return user;
}
}
其他文件和之前的一样。
9、中文乱码问题
** ①方法一:过滤器**
web.xml中配置过滤器为老版本的过滤器
org.apache.struts2.dispatcher.FilterDispatcher
②方法二:直接更改编码
- jsp文件前加上
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
同时,struts.xml文件中指定解码类型
注
解决get传值乱码的方法:修改tomcat配置文件server.xml
10、简单数据校验
10.1 添加验证
由8.1项目的基础上改进而来。在8.1.2 UserAction.add()方法里加上验证
if(name == null || !name.equals("admin")) {
this.addFieldError("name", "name is error");
this.addFieldError("name", "name is too long");
return ERROR;
}
注:这里addFieldError可以将错误信息反馈到前端(传统servlet中有request和response,但是struts中的action没有这两个对象)。
10.2 处理反馈信息
使用addFieldError方法和s:fieldError标签简单处理数据校验
<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<%@taglib uri="/struts-tags" prefix="s" %>
Insert title here
User Add Error!错误信息的两种取法s:fielderror
s:property
10.3 struts.xml
/user_add_success.jsp
/user_add_error.jsp
马士兵struts2视频笔记--第一天
马士兵struts2视频笔记--第二天
马士兵struts2视频笔记--第三天