Struts2框架入门之配置xml环境

一:什么是struts2?
Struts2是开源,免费,轻量级的mvc框架。
(轻量级指的是框架没有侵入性,(侵入性打个比方就是,我买了你公司的一个产品,我还必须把这个产品在你的平台上运行,离了你的平台就废了。))虽然这个框架现在没有那么用处多了,但是还是值得一学的,多一个知识不碍事。
二:struts2框架入门之配置环境。
要使用struts2框架就得下载资源包,当然有互联网可以去官网下载。官网地址
然后我们在官网或者其他渠道下载好Struts2包之后就可以解压安装。我用的是压缩包

然后解压,解压完进入文件夹找到在这里插入图片描述
这是个空项目,我们导入架构包就从这个里面找,解压这个,解压完进入
在这里插入图片描述
在这里插入图片描述
这些就是架构必须包,把它们一网打尽(是全选复制到项目的lib中)
三:实现一个简单的Struts2的输出案例,顺便看看配置文件
首先我们建立一个项目注意是web项目
在这里插入图片描述
建好后导包(上面那些必须的包),然后我们需要配置2个文件,
2个xml文件,一个是web,xml,一个是struts2的文件(文件名为struts.xml名字千万不能错)。
struts的配置文件在src目录下。
web的xml在webContent-web-inf下,
先说下web的配置

<?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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_9" version="2.4">

  <filter>
    <filter-name>struts2</filter-name>
    <!-- 这个class在左边的web app libraries下的 struts2-core-核心(奶瓶那样的)-->
    <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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

下面是class属性的位置,复制一下路径,
在这里插入图片描述
然后我们需要创建一个原类,也就是基本类
在这里插入图片描述
然后是原类的定义
需要注意的是:类中的属性名必须和jsp界面的传的name一致,不然传值会找不到,同时这个属性也要set属性,不然赋值失败

package cn.oracle.pojo;
/*Struts2的第一个案例*/
public class LoginAction {
private String name;
/*在Struts中所有业务方法都是public的,返回值都为字符串,所有的业务方法都没参数,
 * 方法名可以自定以,默认为execute*/
public void setName(String name) {
	this.name = name;
}
//这个方法名默认,千万不能写错。不然报错误,返回值规定为String,同时方法不能有参数
public String execute() {
	if("tom".equals(name)){
		return "success";
	}
	return "error";
}
//下面的方法是另外的,就是指定用哪个方法的那边
public String login() {
	//获取request
	HttpServletRequest request=ServletActionContext.getRequest();
	
	String name=request.getParameter("name");
	String password=request.getParameter("password");
	System.out.println("账号"+name+",密码"+password);
	UserService users=new UserServiceImpl();
	boolean ok=users.login(name, password);
	if(ok){
		request.setAttribute("name", name);
		return "success";
	}else{
		request.setAttribute("message", "账号或者密码错误");
		return "error";
	}
}
//注册
	public String resiger() {
		//获取request
		HttpServletRequest request=ServletActionContext.getRequest();
		
		String name=request.getParameter("name");
		String password=request.getParameter("password");
		System.out.println("账号"+name+",密码"+password);
		UserService users=new UserServiceImpl();
		boolean ok=users.resiger(name, password);
		if(ok){
			//注册成功
			
			request.setAttribute("name", name);
			return "chance";
		}else{
			request.setAttribute("message", "账号或者密码错误");
			return "error";
		}
		


}

接下来我们需要3个jsp文件,(我这里偷懒了用了2个jsp),一个界面是传值给我写的这个类,一个是我这个类方法执行后去的界面,

<%@ 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>
<form action="LoginAction.action" method="post">
	用户名:<input type="text"name="name"/><br/>
	<input type="submit" value="登录"/>
</form>

</body>
</html>

我这个JSP通过form表单传值给我的java类,当然在struts里面后坠是action
然后我们需要配置一下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">
<!--如果没有标签提醒我们可以建立一下dtd的约束,方法为,window,preference-xml-xmlCatalog,右边add,然后key是复制的链接http://struts.apache.org/dtds/struts-2.3.dtd,上面那个File System找到你的dtd安装路径-->
<struts>
<!-- package:包 strut2使用package来组织模块
name 属性:必须,用于其他的包应用当前包
extends:当前包继承哪个包,继承的包默认是struts-default,这是个xml文件,在左边的web app libraries中的
struts2的核心奶瓶点开的最底下有,里面包含了N多属性和方法 -->

<package name="default"  extends="struts-default">
<!--  <default-action-ref name="error"></default-action-ref>-->
<!-- 配置action 其实就是配置url和处理类的方法进行映射 -->
<!-- action的名字自己取的我这里是为了省麻烦所以跟java类保持一致,class是路径 -->
<action name="LoginAction" class="cn.oracle.pojo.LoginAction">
<!-- 注意这里result要写在action之内,同时result的name要和java类中方法返回的数值一样 -->
	<result name="success">suc.jsp</result>
	<result name="error">suc.jsp</result>
	</action>
	<!--如果你想换个指定的方法,不用默认的可以加一个新的action 或者在旧的上面更改,具体如下-->
	<!--这里method属性指的是name的那个*号,然后界面传值我们需要除了指定目的action外还需要加一个方法名,类似这样LoginAction_login.action,,这个_后面的就是方法名指定的
	<action name="LoginAction_*" class="cn.oracle.pojo.LoginAction" method="{1}">
<!-- 注意这里result要写在action之内,同时result的name要和java类中方法返回的数值一直 -->
	<result name="success">/suc.jsp</result>
	<!-- dispatcher是转发  redirect是重定向-->
	<result name="error" type="dispatcher">/Login.jsp</result>
	<!-- 注册成功重定向到login.jsp type不写默认是转发 -->
	<result name="chance" type="redirect">/Login.jsp</result>
	</action>
</package>
  
  
</struts>

我这里偷懒所以返回和失败都是一个界面suc,.jsp

<%@ 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>
<title>Struts第一个案例</title>
<h1>hello  w orld </h1>

</body>
</html>

运行效果图:
在这里插入图片描述
总结下配置中的错误:
在这里插入图片描述异常:
网上查了半天是因为我的方法名写错了,跟默认的方法名错了一个字母
2.JSP界面无响应就是报404,然后解决方法是先把jsp界面加载到服务器上,然后就找到了该界面。

3服务器本地错误,这个错误是说由于Eclipse异常关闭,导致的服务没停,服务器无法再次启动。。。
所以解决方案只能重启了一次。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值