Struts2学习总结
学东西忘的太快了,不写博客就全忘光了 qaq
一. 首先创建一个web项目,并且导入jar包
二. 配置web.xml
需要配置过滤器标签 filter 和 filter-mapping
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Structs_Demo1</display-name>
<filter>
<filter-name>struts2</filter-name>
<!-- 这个类从包struts2-core-2.3.16.3.jar的环境中寻找 -->
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
三. 进行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>
<constant name="struts.devMode" value="true" /> <!-- 设置了程序的运行模式 -->
<constant name="struts.locale" value="zh_CN" /> <!-- 设置程序运行所使用的locale -->
<constant name="struts.i18n.encoding" value="utf-8" /> <!-- 设置程序运行时用的编码方式 -->
<!-- 正确设置后面两个参数,就可以解决Struts2的中文问题了。 -->
<package name="s1" extends="struts-default" namespace="/s1">
<!-- 设置全局跳转 -->
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<!-- action可以被多次映射,只要name不一样 -->
<!-- method属性是action类中的方法名 -->
<action name="baseAction" method="excute1" class="com.lty.action.baseAction">
<result name="success" type="">/index.jsp</result>
<result name="fail" type="">/fail.jsp</result>
</action>
</package>
</struts>
1.首先是struts标签
- struts内写package标签,而且可以写很多个
2.package标签
- package标签中的name是唯一属性,将多个action组织成一个模块;
- 属性namespace 是指工作空间,如果加了namespace属性,域名中需要加入/s1;
3.action标签
- name属性也是唯一的,而且与jsp页面表单内的action属性相对应;
- method属性是action控制器中方法的名称,action中需要继承ActionSupport类;
- class属性中是action控制器的类的位置 例如 :com.lty.action.baseAction;
4.result标签
- name属性表示控制器内的方法的返回字符串,例如图中的success和fail
- 注意跳转jsp页面需要加 /
- type属性是跳转方式
1.action -> jsp (内部分发跳转,默认跳转方式)
2.action -> jsp (重定向跳转)
3.action -> action (内部分发跳转)
4.action -> action (重定向跳转)
四.开发控制器
创建一个类
1.实现action接口
需要完善excute方法
2.继承ActionSupport方法
自定义方法,返回值为String即可
但是需要在struts.xml中进行配置
五.action获取jsp页面参数
通过定义成员变量法
控制器:
package com.lty.action;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.lty.bean.User;
import com.lty.service.userService;
import com.lty.service.userServiceImpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class baseAction extends ActionSupport{
public User user = new User();
public User getUser(){
return user;
}
public void setUser(){
this.user = user;
}
public String excute1(){
userService us = new userServiceImpl();
ActionContext ac = ActionContext.getContext();
String name = user.getName();
String password = user.getPassword();
if(us.isLogin(name,password))
return "success";
else
return "fail";
}
}
jsp页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="<%=request.getContextPath()%>/baseAction" method="post">
姓名:<input type="text" name = "user.name"><br>
密码:<input type="password" name = "user.password"><br>
<input type="submit" value="提交"> <br>
</form>
</body>
</html>