struts2 实战(一)
来源:互联网 发布:平面设计图软件 编辑:程序博客网 时间:2024/05/22 04:50
struts2的架构,如图:
实现流程:
- 客户端发送请求到中央控制器
- 获取请求的URL
- 根据URL找到对应的Action类
- 执行Actio类中对应的方法
- 获取方法的返回值(String类型)
- 根据返回值找到对应的jsp页面
- 给客户端做出回应。
具体操作:
1.导入相应的JAR包,配置web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name>struts2_test</display-name> <!-- 配置Struts2中央控制器 --> <filter> <!-- 配置Struts2核心Filter的名字 --> <filter-name>struts2</filter-name> <!-- 配置Struts2核心Filter的实现类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- 配置Filter拦截的URL --> <filter-mapping> <filter-name>struts2</filter-name> <!-- 配置Struts2的核心FilterDispatcher拦截所有用户请求 --> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>
2.配置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> <!-- 修改默认请求后缀(login.action/login.do/login) --> <constant name="struts.action.extension" value="action,do,,"></constant> <!-- 加载product的action配置 --> <include file="struts-product.xml"/> <include file="struts-user.xml"/> <include file="struts-file.xml"/></struts>
- struts2中默认的请求后缀是.action,可以在struts.xml中通过写
<constant name="struts.action.extension" value="action,do,,"></constant>
更改请求后缀
- 如果struts.xml中配置太多,可以通过
<include file="struts-user.xml"/>
引入各模块的xml,这样写更清晰,更便于管理
以struts-user.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> <package name="user" extends="struts-default" namespace="/user"> <action name="login" class="com.xingguo.action.UserAction" method="loginForm"> <result>/WEB-INF/views/user/login.jsp</result> </action> <action name="logins" class="com.xingguo.action.UserAction" method="login"> <result type="redirectAction"> <param name="namespace">/product</param> <param name="actionName">list</param> </result> <result name="error" type="redirectAction"> <param name="namespace">/user</param> <param name="actionName">login</param> <param name="code">${code}</param> </result> </action> </package></struts>
- 最外面是标签
- 里面是标签。name属性,表示package的名字,可以让其他的package继承;extends属性表示继承,可以继承struts2的struts-default,也可以继承自定义的包名,自定义的包名也要继承struts2的struts-default;namespace属性表示命名空间,是指url访问的路径。
- 标签中,name是url中的请求名。class表示Action所在的位置,method表示Action类中的方法
- 标签中name为返回值,默认为SUCCESS,type指类型,默认是dispatcher请求转发,可以写redirectAction重定向等。
3.在Aaction类写相应的方法
package com.xingguo.action;import com.xingguo.entity.User;import com.xingguo.service.UserService;public class UserAction extends BaseAction{ private static final long serialVersionUID = 1L; private UserService userService = new UserService(); private User user; private String code; //进入登录页面 public String loginForm(){ return SUCCESS; } //登录 public String login(){ System.out.println(user.getUserName()); System.out.println(user.getPassword()); User loginUser = userService.login(user); System.out.println("user"+loginUser); if(loginUser != null){ putSession("user", loginUser); return "success"; }else{ code = "1002"; return "error"; } } //get set public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String getCode() { return code; } public void setCode(String code) { this.code = code; }}
4.JSP页面
<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title><link href="http://cdn.staticfile.org/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet"></head><body> <div class="container"> <s:actionerror/> <form action="<%=request.getContextPath()%>/user/logins" method="post"> <label>用户名</label> <input type="text" name="user.userName"/> <label>密码</label> <input type="password" name="user.password"/> <div class="form-actions"> <button class="btn btn-success" type="submit">进入系统</button> </div> </form> </div></body></html>
0 0
- struts2 实战(一)
- Struts2项目实战 微云盘(一):项目分析
- struts2 实战(二)
- [项目实战] ibatis +spring+struts2+jquery.autocomplete实现产品自动补全功能(一)
- Hibernate实战(一)
- Remoting实战(一)
- Gensim实战(一)
- Openlayers3实战(一)
- Spring实战(一)
- Kubernetes实战(一)
- Qiuck_Cocos实战(一)
- JOOQ实战(一)
- maven 实战(一)
- zabbix实战(一)
- shiro实战(一)
- RocketMQ实战(一)
- Python实战(一)
- RocketMQ实战(一)
- Contains Duplicate II
- UVA 11889-Benefit
- HDOJ-4089 Activation(概率DP)
- android 下拉刷新
- 加油
- struts2 实战(一)
- 【干货】动态规划十问十答
- 面向对象设计七大原则
- Android 图片处理
- CSS中的margin属性
- My97DatePicker时间控件使用
- 我想我的奶奶
- 设计一个算法,求不权无向图连通图G中距离顶点v的最远的一个顶点
- 全志A23芯片停产,全志A33芯片方案取代