S2SH -- STRUTS2

打开IDE MyEclipse 

新建一个WEB PROJECT





点击Finish。生成一个新的web project


导入STRUTS2 JAR包


这些JAR包地址为:\struts-2.3.16.3-all\struts-2.3.16.3\lib

复制粘贴到工程目录的lib包下,MyEclipse会自动加载


现在说一个我在搭建框架时出现的问题,我想把这些JAR包按照技术类别分类,所以我就创建了USER LIBRARY,可是我发现发布后运行报错!找不到包异常。

这种做法和直接把JAR拷贝到lib下自动加载

两者是不同的,下面分别来解释:
用MyEclipse开发WEB项目的时候,当你把jar文件放到lib目录下的话,MyEclipse会自动的将该jar包放入当前项目的类库中,所以我们就可以直接用该jar包所包含的一些API了。

User Library是指用户的类库,首先你要明确,它是根据路劲来引入的,而不是真正的将jar包拷贝到了你系统的目录中(如果你仔细观察的话就会发现,你用User Library的方法引进jar包的话,项目的大小是不会发生变化的,除了自己做测试外,不建议采用这种方法,原因不言而喻)。虽然这种方法也是将jar包引进了类库中,但是在web应用程序下的lib目录下(如果是tomcat的话,这个lib指的就是应用程序的\WEB-INF\lib)是没有此jar包的(对比下第一种情况),如果此时的jar包只是供一般的java应用程序应用的话,是不会出现错误的;但如果此时的jar包要给web应用程序应用的话,就会出现问题了。

修改web.xml文件

第一次修改不是知道怎么写肿么办...

(可以参考struts2自带的工程实例,路径为:\struts-2.3.16.3\apps

该目录下有几个war包,解压缩打开就可以看到一个个完整的简单struts2项目..大家可以引以借鉴..)


找到实例中的web.xml打开,路径为:\struts2-blank\WEB-INF


拷贝

    <span style="color:#ff0000;"><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></span>
粘贴到咱们的项目中的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>S2SH</display-name>

	<span style="color:#ff0000;"><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></span>


	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
</web-app>

好了.web.xml配置完毕.

那么org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,他是干嘛的?有啥用?

StrutsPrepareAndExecuteFilter名字已经很能说明问题了

prepare与execute

前者表示准备,可以说是指filter中的init方法,即配制的导入

后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理

接下来

从实例项目中\struts2-blank\WEB-INF\classes拷贝struts.xml

到本项目中的src目录下,编译后MyEclipse会自动加载到\WEB-INF\classes下


修改struts.xml把没用的删掉!

最终是这样就行啦!

<span style="color:#ff0000;"><!DOCTYPE struts PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
          "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
</span>
OK!到此STRUTS2配置完毕!

发布到TOMCAT下,运行一下试试! 

是否报错? 如果报错请留言咱们一起解决哈!

STRUTS2搭建好了! 怎么用呢? 

咱们一起实现一个STRUTS2的简单登录功能吧!

登录页面 index.jsp

<span style="color:#000099;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
	<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>
	<s:form action="/loginSpace/login.action" name="loginForm">
		<s:textfield name="userName" label="UserName"></s:textfield>
		<s:password name="passWord" label="PassWord"></s:password>
		<s:submit label="LOGIN"></s:submit>
	</s:form>
	<s:actionerror/>
</body>
</html></span>
struts.xml

<strong><span style="color:#000099;"><?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="loginPackage" namespace="/loginSpace" extends="struts-default">
		<action name="login" class="com.zsy.action.LoginAction">
			<result name="success" type="redirect">/index.jsp</result>
			<result name="error">/index.jsp</result>
			<result name="input">/index.jsp</result>
		</action>
	</package>
</struts></span></strong>

解释:
package:类似于java中的包
name:只得的是包的名字,可以自定义
namespace:命名空间,默认为'/',如果未填,当你页面请求action时就会到根目录寻找包名为login下的action,如果你填写了namespace为'/loginSpace',就会到相应的目录下寻找,如果没找到,还会到根目录下继续寻找对应的action,如果还是未找到就会报错
extends:类似于java中的继承特征,extends="struts-default"就是继承struts-default.xml,它里面定义了许多跳转类型、拦截器等一些常用的东西

LoginAction.java

<span style="color:#000099;">package com.zsy.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	private static final long serialVersionUID = 1L;

	private String userName;
	private String passWord;
	
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public void setPassWord(String passWord) {
		this.passWord = passWord;
	}
	
	public String execute() throws Exception{
		if(!userName.equals("admin")){
			super.addFieldError("userName", "用户名不正确");
			return ERROR;
		}
		if(!passWord.equals("admin")){
			super.addFieldError("passWord", "密码不正确");
			return ERROR;
		}
		return SUCCESS;
	}
	
	public void validate(){
		if(userName == null || userName.length() == 0){
			super.addActionError("用户名不能为空");
		}
		if(passWord == null || passWord.length() == 0){
			super.addActionError("密码不能为空");
		}
	}
}</span>
好啦!到此结束!发布运行看结果吧!

打开IE 输入:http://localhost:8080/S2SH/     或者    http://127.0.0.1:8080/S2SH/



直接点Submit




当前设定的账号为:admin/admin

输入错误会显示





好啦!到此功能OK!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值