Struts2——1.创建Struts项目

来源:互联网 发布:知乎 管理者 编辑:程序博客网 时间:2024/05/25 08:14


步骤

具体为以下几个步骤:

  1. 引入Struts2框架所需运行库文件

  2. 创建并配置web.xml文件

  3. 创建一个Action

  4. 创建并配置struts.xml文件

jar包


web.xml

web.xml文件中进行核心调度器的配置。

<?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/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>Struts01</display-name><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></web-app>

此处过滤了所有的访问路径。当然,也可以设置为仅过滤actionjsp文件。

2.5版本后,支持多个url-pattern

<url-pattern>*.action</url-pattern><url-pattern>*.jsp</url-pattern>


ACTION类

需求分析:(此处使用的是简单的ACTION类,其他常用方式,下文再说明)

1.Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的settergetter方法。

2.Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。

3.Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。

public class UserAction {private String username;public String execute() {if (username != null && !username.isEmpty()) {return "success";}return "error";}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}


struts.xml

Struts2的核心配置文件,放在src目录下。

<?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>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default"><action name="userAction" class="com.zhidisoft.action.UserAction"><result name="success">/success.jsp</result><result name="error">/error.jsp</result></action>    </package></struts>

注意:

action标签中定义了nameclassname属性对应的是用户URL请求中的action名,比如在本应用中,用户请求为http://localhost:8080/Struts2/userAction.action,那么name属性就应该为userActionclass属性是处理请求的实现类(注意:要包含完整路径),本应用的实现类是com.zhidisoft.action.UserAction

result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的success.jsp页面进行处理;如果返回的字符串是"error”则由error.jsp页面进行处理。


编写前端界面:

首页 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head><title>首页</title></head><body><form action="userAction.action" method="post"><input type="text" placeholder="请输入用户名 " name="username"><button type="submit">登录</button></form></body></html>

 

登录成功页面  success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML ><html><head><title>登录成功</title></head><body>${username},欢迎回来。</body></html>

登录失败页面 error.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML><html><head><title>登录失败</title></head><body>用户名没有输入。</body></html>





原创粉丝点击