Struts学习总结(一)——后台接收表单数据与映射
1.1.1新建一个Maven项目,添加Web构面与struts2构面
新建好的目录如下:

1.1.2 编写pom文件,添加Maven依赖
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.nf</groupId> <artifactId>struts01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <!-- 设置整个maven项目的编码格式 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 设置控制台输出参数的编码格式, 解决乱码 --> <orgLine>-Dfile.encoding=UTF-8</orgLine> </properties> <build> <plugins> <!-- 配置maven编译插件,指定maven编译版本 --> <plugin> <!-- 插件名称 --> <artifactId>maven-compiler-plugin</artifactId> <!-- 插件配置信息 --> <configuration> <target>1.8</target> <source>1.8</source> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <!-- 插件名称 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <warSourceDirectory>web</warSourceDirectory> <webXml>web\WEB-INF\web.xml</webXml> </configuration> </plugin> </plugins> </build> <!-- 添加Struts依赖 --> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.8</version> </dependency> </dependencies> </project>
运行效果:

1.1.3在resources 中编写struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="pkg" extends="struts-default" strict-method-invocation="false"> <action name="user*" class="org.action.user.UserAction2" method="{1}"> <!-- 转发到index页面 默认就是转发 {1}表示匹配第一个*号--> <result>/index.jsp</result> </action> </package> </struts>
1.1.4编写Users类
package org.action.entity; public class Users { //映射表单参数(属性名和表单的name属性一致) private String userName; private String password; private int age; //数组用于接收表单中name属性名相同的内容 private String[] addr; 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public String[] getAddr() { return addr; } public void setAddr(String[] addr) { this.addr = addr; } }
1.1.5编写字符编码过滤器Encoding
package org.action.filter; import javax.servlet.*; import java.io.IOException; public class EncodingFilter implements Filter{ String encoder = null; @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init EncodingFilter..."); encoder = filterConfig.getInitParameter("encoder"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { request.setCharacterEncoding(encoder); response.setCharacterEncoding(encoder); //放行请求 filterChain.doFilter(request, response); } @Override public void destroy() { } }
1.1.6编写UserAction类
package org.action.user; /** * Created by Administrator on 2017/1/3. */ public class UserAction { private String userName; private String password; private int age; private String[] addr; 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public String[] getAddr() { return addr; } public void setAddr(String[] addr) { this.addr = addr; } public String login(){ System.out.println(userName); System.out.println(password); System.out.println(age); for (String s : addr) { System.out.println(s); } return "success"; } }
1.1.7编写UserAction2类
package org.action.user; import org.action.entity.Users; public class UserAction2 { private Users user; public Users getUser() { return user; } public void setUser(Users user) { this.user = user; } public String login(){ System.out.println(user.getUserName()); System.out.println(user.getPassword()); System.out.println(user.getAge()); for (String s : user.getAddr()) { System.out.println(s); } return "success"; } }
1.2.1 login.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form method="post" action="userlogin"> UserName:<input type="text" name="user.userName"/><br/> Password:<input type="password" name="user.password"/><br/> Age:<input tyep="text" name="user.age"/><br/> Addr1:<input type="text" name="user.addr"/><br/> Addr2:<input type="text" name="user.addr"/><br/> <input type="submit" value="submit"/> </form> </body> </html>
1.2.2 index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
success...........
</body>
</html>
1.2.3运行效果:



浙公网安备 33010602011771号