今天无聊,想自己学习一下struts2.自己做了一个简单的例子。
struts2必要的jar包
- commons-logging-1.0.4.jar
- commons-fileupload-1.2.1.jar
- freemarker-2.3.16.jar
- ognl-3.0.jar
- struts2-core-2.2.1.jar
- xwork-core-2.2.1.jar
注意的是struts.xml,必须在class目录。也就是在编译环境下src目录下。
下面把例子奉上。
struts.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!-- namesepace=""JSP页面请求的地址。注意完整的请求地址是/namesepace/action-->
- <!-- 这对应的是应是/user/user-->
- <package name="default" namespace="/user" extends="struts-default">
- <!-- mentond 在请求到action,要执行的方法-->
- <action name="user" method="login" class="com.user.atction.UserAction">
- <result name="success">success.jsp</result>
- <result name="error">error.jsp</result>
- </action>
- </package>
- </struts>
struts.properties
- struts.i18n.encoding=gb2312
action
- package com.user.atction;
- import javax.persistence.EntityManagerFactory;
- import javax.persistence.Persistence;
- import com.daoimp.Userimp;
- import com.entity.User;
- import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport {
- private static final long serialVersionUID = 1L;
- private String username;
- private String password;
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String login() {
- //持久层的JPA代码
- EntityManagerFactory factory = Persistence
- .createEntityManagerFactory("JpaTest");
- Userimp userDao = new Userimp();
- userDao.setManager(factory.createEntityManager());
- User user = new User();
- user.setUserName(this.getUsername());
- user.setPassWord(this.getPassword());
- String url = "error";
- if (userDao.findUser(user) != null) {
- url = "success";
- }
- return url;
- }
- }
在struts2中,不需要request.getParameter(xxx)获取JSP页面中form表单中的值,struts已经为我们封装好了。
只要在action中,声明一个属性,有get()和set(),在action获取值。
- <s:form action="user/user" method="post" >
- <!-- 这里的name="username"对应action属性中的 private String username-->
- user:<input type="text" name="username"/>
- <!-- 这里的name="password"对应action属性中的 private String password-->
- pass:<input type="password" name="password"/>
- <s:submit/>
- </s:form>