admin 管理员组

文章数量: 887629


2023年12月23日发(作者:java中switch的格式)

实验2 Struts 2 入门

一. 目的要求

1.掌握Struts 2 开发环境的搭建;

2.理解Strtus 2 的工作流程;

3.掌握Struts 2 的和文件配置。

二.实验任务

1. 搭建Struts 2 的开发环境;

2. 实现用户登录。

三.实验环境、设备

PC、Tomcat7.0、strtus2.3.4、Eclipse。

四.实验指导

4.1 背景知识简述

如果在文件中配置了FilterDispatcher过滤器,且关联了action资源,当用户发送一个以.action结尾的请求后,Struts2框架将根据*.action请求前面的”*”来决定调用哪个业务。

配置文件起映射作用,它根据”*”来决定调用用户定义的哪个Action类。Struts2的拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到用户定义的Action类中,然后再调用其execute()方法处理用户请求,处理结束会返回一个值,此时,Struts框架又起映射作用,会根据其返回值来决定跳转到哪个页面。

4.2 试验内容

根据本单元已学的Struts 2的相关知识完成图书馆管理系统的用户登录模块的设计,要求如下:

(1)当首次登录页面时,程序提示用户“您尚未登录,请登陆”。

(2)单击“登录超链接”,系统会自动跳转到登陆页面。

(3)在登录页面中,若用户在文本框和密码框什么都不输入,就单击“确

定”按钮,则该页面会出现“用户名不能为空”和“密码不能为空”的提示性信息。

(4)当用户输入的用户名和密码错误时,即用户名和密码不是指定的用户名和密码,系统会在当前页面上显示“用户名和密码出错”,要求用户重新输入。

(5)如果用户输入的用户名和密码无误,就会跳转到成功页面,在成功登录页面上显示当前登录的用户名和详细信息。

(6)用户输入的用户名和密码可以是数字和中英文字符等。

4.3 实验步骤

1. 搭建Struts 2 开发环境;

2. 建立一个Web Project(命名为struts_0101),并添加Struts 2 jar

包;

3. 编写登录页面()、登录成功(login_)和登录失败页面(login_);

4. 编写Ation实现类,继承ActionSupport,重写execute()方法;

5. 配置;

6. 配置;

7. 部署、启动Tomcat;

8. 运行:在IE地址栏输入localhost:8080/struts_0101/

4.4 源代码清单

:

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ page import=""%>

<%

String path = textPath() + "/";

境)

String basePath = eme() + "://" +

verName() + ":" + verPort() + path;

String str = UUID().toString();

%>

//context 上下文(环

"/TR/html4/">

}

("username=" + userName +"&password="+password);

style="height:400px;width:350px;float:left;border:10">

enctype="application/x-www-form-urlencoded">

会员名:

name="userName" value=""/>

密   码:

style="height:25px;width:220px" type="password" name="password"

value=""/>



style="height:40px;width:290px;sborder:0;font-size:17px;"

type="button" value="登

录" onclick="denglu()"/>


loginAction:

package s;

import ist;

import ;

import rvletRequest;

import del;

import ols;

public class LoginAction {

private UserModel um;

HttpServletRequest request;

public void execute() {

}

public String find(){

("进入findAction");

String un = rName();

String pw = sword();

String sql = "select * from bookinfo where username

='"+un+"'";

}

:

"-//Apache Software Foundation//DTD Struts Configuration

public void setUm(UserModel um) {

}

= um;

}

public UserModel getUm() {

}

return um;

JDBCTools jt = new JDBCTools();

ArrayList> rsList = (sql);

Map rsMap = (0);

String pw1 = ("PASSWORD");

if ((pw1)) {

n("-------------- 登陆 成功");

ribute("un",rName());

return "success";

} else {

}

return "saveError";

2.1//EN"

"/dtds/">

class="ction" method="execute" >

/

/

:

xmlns="/xml/ns/javaee"

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/javaee

/xml/ns/javaee/web-app_2_">

FirstServlet

ervlets

FirstServlet

/first

struts2

Dispatcher

struts2

*.action

JDBCTools:

public ArrayList> find(String sql) {

ArrayList> rsList = null;

try {

rsList = new ArrayList>();

e("");

Connection conn =

nection("jdbc:mysql://localhost:3308/test",

"huyue", "huyue");

Statement stmt = Statement();

ResultSet rs = eQuery(sql);

ResultSetMetaData rsmd = aData();

while (()) {

Map rsMap = new

HashMap();

for (int i = 1; i <= umnCount();

i++) {

String columnName =

umnName(i);

}

}

}

(rsMap);

String value = ing(columnName);

(columnName, value);

} catch (Exception e) {

}

return rsList;

tackTrace();

UserModel:

package ;

public class UserModel {

private int userid;

private String userName;

private String password;

private String sex;

private int age;

private String telNum;

private String email;

public int getUserid() {

}

return userid;

public void setUserid(int userid) {

= userid;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

me = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

rd = password;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

= sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

= age;

}

public String getTelNum() {

return telNum;

}

public void setTelNum(String telNum) {

= telNum;

}

}

public String getEmail() {

}

public void setEmail(String email) {

}

= email;

return email;

4.5 运行结果截图

4.6 回答问题

1.简述Struts2的体系结构。

答:Struts2是一个上拉型MVC框架。在Struts2的模型-视图-控制器模式,实现以下五个核心部件:Actions,Interceptors,Value

Statck/OGNL,Results/Result types,View technologies.

2.简述Struts2的工作机制。

答:Struts2与WebWork的工作方式类似,它同样使用了拦截器作为其处理用户请求的控制器。在Struts2中有一个核心控制器FilterDispatcher,这个核心控制器相当于Struts1的ActionServlet类。FilterDispatcher负责处理用户的所有请求,如果遇到以“.action”结尾请求的URL,就会交给Struts2框架来处理,具体步骤如下:(1)客户端浏览器发送请求,此时客户端会初始化一个指向Servlet容器的请求。(2)这个请求要经过一系列的过滤器(3)接着核心控制器FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定是否调用action以及调用哪个action(4)如果ActionMapper决定需要调用某个action,FilterDispatcher把请求的处理交给ActionProxy(5)ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的action(6)ActionProxy创建一个ActionInvocation的实例(7)ActionInvocation实例使用命名模式来调用,在调用Action的execute()方法之前,struts2回调用一系列的拦截器以提供一些通用的功能。(8)在调用完拦截器链之后,struts2会调用action的execute方法(9)一旦action执行完毕,ActionInvocation负责根据中的配置找到相应的返回结果。

3.叙述实验中的文件中,各个元素代表的含义,以及在工程中的位置。

答:(1)

class="ction" method="execute" >

/

/

(2)是Struts2的核心配置文件,通常放在Web应用程序的WEB-INF/classes目录下


本文标签: 用户 请求 用户名