SSH2搭建篇01——strusts2

来源:互联网 发布:淘宝免费模板手机版 编辑:程序博客网 时间:2024/05/16 05:25

先说说集成SSH2最麻烦的是架包了,我strust2,hibernate用的是myeclipe8.5自带的架包,加这2个框架有个冲突是都有antlr-.jar 去掉低版本的就行,spring是3.1.0版本下载的包含源码点击打开链接,附上我的项目源码点击打开链接

(我就不贴出所有jar了,自己也有点搞糊涂了,因为jar少了多了调了很久,自己搞出来才有收获)


我是安装struts2-——hibernate——spring 来集成的

首先,搭建是trust2 ,这个可以在myeclipe8.5中右击--MyEclipe--Add strust 选择2.1 --finish ,也可以手动加上struts2的jar (MyEclipe加下把jar拿出来再自己手动加上-我是手动的)

1.web.xml   加上strust2 filter   这个是最新的filter  

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

 <!-- struts2 -->      <filter>          <filter-name>struts2</filter-name>          <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>  

2.创建一个login.action  (简单的登录)

package com.yeshun.action;import java.util.List;import com.yeshun.bean.User;public class LoginAction extends BaseAction {private static final long serialVersionUID = 1L;private String username;private String password;public String login(){System.out.println(username+" -  "+password);if("admin".equals(username) && "123456".equals(password)){User user = new User();user.setUsername(username);user.setPassword(password);request.getSession().setAttribute("user", user);return SUCCESS;}else{request.setAttribute("msg", "用户名或密码错误!");}return LOGIN;}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;}}


3.strust.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><!--<constant>标签主要是用来修改struts.properties配置文件信息,name和value分别相当于struts.properties文件中的name和value--><constant name="struts.i18n.encoding" value="utf-8" /><package name="struts2" extends="struts-default"><action name="LoginAction" class="com.yeshun.action.LoginAction" method="login"><result name="success">/success.jsp</result><result name="login">/login.jsp</result><result name="input">/login.jsp</result></action><action name="TestAction" class="com.yeshun.action.TestAction"method="test"><result name="success">/index.jsp</result></action></package></struts>    

3.login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix ="s" uri="/struts-tags"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html>  <head>  <base href="<%=basePath%>">        <title>登录页面</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page">  </head>    <body> <center> <h1>登录</h1> <c:if test="${msg != null}"><font color="red">${msg}</font></c:if> <s:form action="LoginAction">用户名:  <input type="text" name="username" size="20"> <br/>密  码:  <input type="password" name="password" size="20">  <s:submit value="提交" ></s:submit>   </s:form></center>  </body></html>

4.success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib uri="/struts-tags" prefix="s" %>  <%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html>  <head>  </head>    <body><font size="30" color="red">成功</font><br />用户名:${user.username}</html>

发布测试-成功就说明搭建成了!


二.struts2 主要是拦截器,那我们也配置一个登录的验证,上面如果登录成功会有一个session的当访问别的action是进行拦截,用MethodFilterInterceptor

要深入学习struts2的,我推荐个csdn的博客点击打开链接


1.strust.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><!--<constant>标签主要是用来修改struts.properties配置文件信息,name和value分别相当于struts.properties文件中的name和value--><constant name="struts.i18n.encoding" value="utf-8" /><package name="default" extends="struts-default"><!-- 地址栏随便输入的时候,找不到对应的action,避免出现错误,配置默认的action --><!-- <default-action-ref name="defaultAction"></default-action-ref><action name="defaultAction"><result>/index.jsp</result></action> --></package><!--struts2 自定义拦截器学习  --><package name="struts2" extends="struts-default"><interceptors><!-- 配置未登录进行操作的拦截器 --><interceptor name="loginInterceptor" class="com.yeshun.intecepter.AuthorInterceptor"><param name="excludeMethods">login</param></interceptor><!-- 重新封装一个默认的拦截器栈 --><interceptor-stack name="myDefaultStack"><interceptor-ref name="loginInterceptor" /><interceptor-ref name="defaultStack" /></interceptor-stack></interceptors><!-- 为这个包设置默认的拦截器栈 --><default-interceptor-ref name="myDefaultStack" /><global-results><result name="login">/login.jsp</result></global-results><action name="LoginAction" class="com.yeshun.action.LoginAction" method="login"><result name="success">/success.jsp</result><result name="login">/login.jsp</result><result name="input">/login.jsp</result></action><action name="TestAction" class="com.yeshun.action.TestAction"method="test"><result name="success">/index.jsp</result></action></package></struts>    

2.AuthorInterceptor类

package com.yeshun.intecepter;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.StrutsStatics;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionInvocation;import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;import com.yeshun.bean.User;public class AuthorInterceptor extends MethodFilterInterceptor {/** *  */private static final long serialVersionUID = 1L;@Overrideprotected String doIntercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stubActionContext context = invocation.getInvocationContext();// 通过ActionContext来获取httpRequestHttpServletRequest request = (HttpServletRequest) context.get(StrutsStatics.HTTP_REQUEST);// 也可以通过ServletActionContext来获取httpRequest// HttpServletRequest request = ServletActionContext.getRequest();// 取得根目录的绝对路径String currentURL = request.getRequestURI();// 截取到访问的相对路径,可以通过这个和权限表比较来进行相应的权限控制String targetURL = currentURL.substring(currentURL.indexOf("/", 1),currentURL.length());System.out.println(currentURL + ".............." + targetURL);// 通过ActionContext获取session的信息,以Map形式返回Map session = context.getSession();// 获取容器里面的username值,如果存在说明该用户已经登录,让他执行操作,如果未登录让他进行登录User user = (User) session.get("user");if (user != null) {invocation.invoke();System.out.println("username:"+user.getUsername());}request.setAttribute("msg", "对不起,你没有登录,不能进行该操作");return "login";}}

然后,我们访问TestAction.ation  如果没有登录将跳到登录界面


struts2 配置好了