前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSH构造struts2项目

SSH构造struts2项目

作者头像
ydymz
发布2018-09-10 15:02:46
2390
发布2018-09-10 15:02:46
举报
文章被收录于专栏:lgp20151222lgp20151222

第一在pom.xml导入相应的包

(网上有很多导入多个包的教程,我缩减到一个了)

代码语言:javascript
复制
 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3     <modelVersion>4.0.0</modelVersion>
 4     <groupId>com.lgp</groupId>
 5     <artifactId>maven_struts2</artifactId>
 6     <packaging>war</packaging>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <name>maven_struts2 Maven Webapp</name>
 9     <url>http://maven.apache.org</url>
10     <properties>
11         <project.build.sourceEncoding>
12             UTF-8
13         </project.build.sourceEncoding>
14     </properties>
15 
16     <dependencies>
17         <dependency>
18             <groupId>junit</groupId>
19             <artifactId>junit</artifactId>
20             <version>3.8.1</version>
21             <scope>test</scope>
22         </dependency>
23         <dependency>
24             <groupId>org.apache.struts</groupId>
25             <artifactId>struts2-core</artifactId>
26             <version>2.3.31</version>
27         </dependency>
28     </dependencies>
29     <build>
30         <finalName>maven_struts2</finalName>
31     </build>
32 </project>

导入包之后,有的电脑会报错,maven-update就好了

然后去web.xml那里注册struts2的过滤器

代码语言:javascript
复制
 1 <!DOCTYPE web-app PUBLIC
 2  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 3  "http://java.sun.com/dtd/web-app_2_3.dtd" >
 4 
 5 <web-app>
 6     <display-name>Archetype Created Web Application</display-name>
 7     <filter>
 8         <filter-name>struts2</filter-name>
 9         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
10     </filter>
11 
12     <filter-mapping>
13         <filter-name>struts2</filter-name>
14         <url-pattern>/*</url-pattern>
15     </filter-mapping>
16 </web-app>

然后就写struts.xml,记住放在resources文件夹下

代码语言:javascript
复制
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- name:包名,可自定义 extends:继承 namespace:命名空间 -->
 8     <!-- 定义常量 请求后缀 默认是.action -->
 9     <!-- 但指定了之后 就必须写上后缀 -->
10     <constant name="struts.action.extension" value="action,do" />
11     <package name="helloworld" extends="struts-default" namespace="/">
12         <action name="helloworld_*" class="com.action.HelloWorldAction"
13             method="{1}">
14             <result name="{1}">{1}.jsp</result>
15         </action>
16     </package>
17     <package name="user" namespace="/" extends="struts-default">
18         <interceptors>
19             <interceptor name="myInterceptor" class="com.interceptor.MyInterceptor"></interceptor>
20             <interceptor-stack name="mystack">
21                 <interceptor-ref name="defaultStack" />
22                 <interceptor-ref name="myInterceptor" />
23                 <!-- 先进入默认拦截器,再到自定义拦截器 -->
24             </interceptor-stack>
25         </interceptors>
26         <action name="user_login" class="com.action.UserAction" method="login">
27             <interceptor-ref name="mystack"></interceptor-ref>
28             <result name="success">userinfo.jsp</result>
29         </action>
30     </package>
31 </struts>

action类

代码语言:javascript
复制
 1 package com.action;
 2 
 3 public class HelloWorldAction {
 4     public String a() {
 5         System.out.println("a..");
 6         return "a";
 7     }
 8 
 9     public String b() {
10         System.out.println("b..");
11         return "b";
12     }
13 
14     public String c() {
15         System.out.println("c..");
16         return "c";
17     }
18 
19     public String user() {
20         System.out.println("user..");
21         return "user";
22     }
23 }
24 
25 
26 
27 
28 package com.action;
29 
30 import com.entiy.User;
31 import com.opensymphony.xwork2.ActionContext;
32 import com.opensymphony.xwork2.ActionSupport;
33 import com.opensymphony.xwork2.util.ValueStack;
34 
35 public class UserAction extends ActionSupport {
36     private static final long serialVersionUID = -1417237614181805435L;
37     private String name;
38     private String pwd;
39 
40     public String login() {
41         System.out.println("login..");
42         System.out.println("name----" + name);
43         System.out.println("pwd----" + pwd);
44         // ValueStack vs=ActionContext.getContext().getValueStack();
45         ActionContext context = ActionContext.getContext();
46         ValueStack vs = context.getValueStack();
47         // 值栈的栈顶
48 
49         User user = new User("张三", "张三的密码");
50         vs.push(user);
51         return SUCCESS;
52     }
53 
54     public String getName() {
55         return name;
56     }
57 
58     public void setName(String name) {
59         this.name = name;
60     }
61 
62     public String getPwd() {
63         return pwd;
64     }
65 
66     public void setPwd(String pwd) {
67         this.pwd = pwd;
68     }
69 }

实体类

代码语言:javascript
复制
 1 package com.entiy;
 2 
 3 public class User {
 4     private String name;
 5     private String pwd;
 6 
 7     public User(String name, String pwd) {
 8         this.name = name;
 9         this.pwd = pwd;
10     }
11 
12     public String getPwd() {
13         return pwd;
14     }
15 
16     public void setPwd(String pwd) {
17         this.pwd = pwd;
18     }
19 
20     public String getName() {
21         return name;
22     }
23 
24     public void setName(String name) {
25         this.name = name;
26     }
27 }

拦截器

代码语言:javascript
复制
 1 package com.interceptor;
 2 
 3 import com.opensymphony.xwork2.ActionInvocation;
 4 import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
 5 
 6 /**
 7  * 自定义拦截器
 8  * 
 9  * @author SUMMER
10  *
11  */
12 public class MyInterceptor extends AbstractInterceptor {
13 
14     /**
15      * 
16      */
17     private static final long serialVersionUID = 1L;
18 
19     /**
20      * 判断session有关的操作
21      */
22     @Override
23     public String intercept(ActionInvocation actioninvocation) throws Exception {
24         System.out.println("我的拦截器开始...");
25         actioninvocation.invoke();
26         System.out.println("我的拦截器结束...");
27         // AOP 面向切面编程
28         return null;
29     }
30 
31 }

a.jsp/b.jsp/c.jsp

代码语言:javascript
复制
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
aaaaaaaaaaaaaaaa
</body>
</html>

index.jsp

a没有后缀所以是错误的

代码语言:javascript
复制
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10    <a href="<%=request.getContextPath() %>/helloworld_a">a</a>
11    <br><br>
12    <a href="<%=request.getContextPath() %>/helloworld_b.do">b</a>
13    <br><br>
14    <a href="<%=request.getContextPath() %>/helloworld_c.action">c</a>
15    <br><br>
16    <a href="<%=request.getContextPath() %>/helloworld_user.action">用户</a>
17 </body>
18 </html>

user.jsp/userinfo.jsp

姓名分成3组

第二第三组是一对的,第一是混搭的,注意取值的方法

代码语言:javascript
复制
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="<%=request.getContextPath() %>/user_login.do" method="post">
11     姓名:<input type="text" name="name">
12     <br><br>
13     密码:<input type="text" name="pwd">
14     <br><br>
15     <input type="submit" value="登录">
16 </form>
17 </body>
18 </html>
代码语言:javascript
复制
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8" isELIgnored="false"%>
 3 <%@taglib uri="/struts-tags" prefix="s"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11     姓名1:${name}
12     <br>密码1:<%=request.getParameter("pwd")%><br>
13     <br>姓名2:
14     <s:property value="[0].name" />
15     <br>密码2:${requestScope.pwd}
16     <br>姓名3:
17     <s:property value="[1].name" />
18     <br>密码3:
19     <s:property value="[1].pwd" />
20     <br>
21 </body>
22 </html>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档