实验2Struts2入门.docx

上传人:b****3 文档编号:4326558 上传时间:2023-05-07 格式:DOCX 页数:15 大小:295.14KB
下载 相关 举报
实验2Struts2入门.docx_第1页
第1页 / 共15页
实验2Struts2入门.docx_第2页
第2页 / 共15页
实验2Struts2入门.docx_第3页
第3页 / 共15页
实验2Struts2入门.docx_第4页
第4页 / 共15页
实验2Struts2入门.docx_第5页
第5页 / 共15页
实验2Struts2入门.docx_第6页
第6页 / 共15页
实验2Struts2入门.docx_第7页
第7页 / 共15页
实验2Struts2入门.docx_第8页
第8页 / 共15页
实验2Struts2入门.docx_第9页
第9页 / 共15页
实验2Struts2入门.docx_第10页
第10页 / 共15页
实验2Struts2入门.docx_第11页
第11页 / 共15页
实验2Struts2入门.docx_第12页
第12页 / 共15页
实验2Struts2入门.docx_第13页
第13页 / 共15页
实验2Struts2入门.docx_第14页
第14页 / 共15页
实验2Struts2入门.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验2Struts2入门.docx

《实验2Struts2入门.docx》由会员分享,可在线阅读,更多相关《实验2Struts2入门.docx(15页珍藏版)》请在冰点文库上搜索。

实验2Struts2入门.docx

实验2Struts2入门

实验2Struts2入门

一.目的要求

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

2.理解Strtus2的工作流程;

3.掌握Struts2的web.xml和struts.xml文件配置。

二.实验任务

1.搭建Struts2的开发环境;

2.实现用户登录。

三.实验环境、设备

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

四.实验指导

4.1背景知识简述

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

struts.xml配置文件起映射作用,它根据”*”来决定调用用户定义的哪个Action类。

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

4.2试验内容

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

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

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

(3)在登录页面中,若用户在文本框和密码框什么都不输入,就单击“确定”按钮,则该页面会出现“用户名不能为空”和“密码不能为空”的提示性信息。

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

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

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

4.3实验步骤

1.搭建Struts2开发环境;

2.建立一个WebProject(命名为struts_0101),并添加Struts2jar包;

3.编写登录页面(login.jsp)、登录成功(login_success.jsp)和登录失败页面(login_fail.jsp);

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

5.配置web.xml;

6.配置struts.xml;

7.部署、启动Tomcat;

8.运行:

在IE地址栏输入http:

//localhost:

8080/struts_0101/login.jsp

4.4源代码清单

Login.jsp:

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

pageEncoding="utf-8"%>

<%@pageimport="java.util.UUID"%>

<%

Stringpath=request.getContextPath()+"/";//context上下文(环境)

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+path;

Stringstr=UUID.randomUUID().toString();

%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

login.jsp

functiondenglu(){

varuserName=document.getElementsByName("userName").value;

varpassword=document.getElementsByName("password").value;

if(userName==""){

alert("用户名不能为空");

}elseif(password==""){

alert("密码不能为空");

}else{

varreq=newXMLHttpRequest();

req.onreadystatechange=function(){

if(req.readyState==4){

vardata=req.responseText;//响应数据

if(data>0){

location.href="success。

jsp?

un="+username;

}else{

alert("用户名或密码错误");

}

}

}

req.open("post","Login.action",true);

req.setRequestHeader("Content-type","application/x-www-form-urlencoded");

req.send("username="+userName+"&password="+password);

}

}

500px;width:

450px;float:

left">

400px;width:

350px;float:

left;border:

10">

会员名:

25px;width:

220px"name="userName"value=""/>

密 码:

25px;width:

220px"type="password"name="password"value=""/>



40px;width:

290px;sborder:

0;font-size:

17px;"type="button"value="登录"onclick="denglu()"/>


loginAction:

packagecom.huyue.actions;

importjava.util.ArrayList;

importjava.util.Map;

importjavax.servlet.http.HttpServletRequest;

importcom.huyue.models.UserModel;

importcom.huyue.tools.JDBCTools;

publicclassLoginAction{

privateUserModelum;

HttpServletRequestrequest;

publicvoidexecute(){

}

publicStringfind(){

System.out.print("进入findAction");

Stringun=um.getUserName();

Stringpw=um.getPassword();

Stringsql="select*frombookinfowhereusername='"+un+"'";

JDBCToolsjt=newJDBCTools();

ArrayList>rsList=jt.find(sql);

MaprsMap=rsList.get(0);

Stringpw1=rsMap.get("PASSWORD");

if(pw.equals(pw1)){

System.out.println("--------------登陆成功");

request.setAttribute("un",um.getUserName());

return"success";

}else{

return"saveError";

}

}

publicUserModelgetUm(){

returnum;

}

publicvoidsetUm(UserModelum){

this.um=um;

}

}

Struts.xml:

xmlversion="1.0"encoding="UTF-8"?

>

DOCTYPEstrutsPUBLIC

"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"

"http:

//struts.apache.org/dtds/struts-2.1.dtd">

--package是struts意义上的包-->

/success.jsp

/fail.jsp

Web.xml:

xmlversion="1.0"encoding="UTF-8"?

>

xmlns="

xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

xsi:

schemaLocation="

index.jsp

FirstServlet

com.huyue.servlets.LoginServlets

FirstServlet

/first

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

*.action

JDBCTools:

publicArrayList>find(Stringsql){

ArrayList>rsList=null;

try{

rsList=newArrayList>();

Class.forName("com.mysql.jdbc.Driver");

Connectionconn=DriverManager.getConnection("jdbc:

mysql:

//localhost:

3308/test","huyue","huyue");

Statementstmt=conn.createStatement();

ResultSetrs=stmt.executeQuery(sql);

ResultSetMetaDatarsmd=rs.getMetaData();

while(rs.next()){

MaprsMap=newHashMap();

for(inti=1;i<=rsmd.getColumnCount();i++){

StringcolumnName=rsmd.getColumnName(i);

Stringvalue=rs.getString(columnName);

rsMap.put(columnName,value);

}

rsList.add(rsMap);

}

}catch(Exceptione){

e.printStackTrace();

}

returnrsList;

}

UserModel:

packagecom.huyue.models;

publicclassUserModel{

privateintuserid;

privateStringuserName;

privateStringpassword;

privateStringsex;

privateintage;

privateStringtelNum;

privateStringemail;

publicintgetUserid(){

returnuserid;

}

publicvoidsetUserid(intuserid){

this.userid=userid;

}

publicStringgetUserName(){

returnuserName;

}

publicvoidsetUserName(StringuserName){

this.userName=userName;

}

publicStringgetPassword(){

returnpassword;

}

publicvoidsetPassword(Stringpassword){

this.password=password;

}

publicStringgetSex(){

returnsex;

}

publicvoidsetSex(Stringsex){

this.sex=sex;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicStringgetTelNum(){

returntelNum;

}

publicvoidsetTelNum(StringtelNum){

this.telNum=telNum;

}

publicStringgetEmail(){

returnemail;

}

publicvoidsetEmail(Stringemail){

this.email=email;

}

}

4.5运行结果截图

4.6回答问题

1.简述Struts2的体系结构。

答:

Struts2是一个上拉型MVC框架。

在Struts2的模型-视图-控制器模式,实现以下五个核心部件:

Actions,Interceptors,ValueStatck/OGNL,Results/Resulttypes,Viewtechnologies.

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负责根据struts.xml中的配置找到相应的返回结果。

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

答:

(1)

--package是struts意义上的包-->

/success.jsp

—result配置元素:

result元素代表一个可能的输出。

当action类的方法完成时,将返回一个字符串类型的结果码,框架就根据这个结果码选择对应的result元素,向用户输出。

-->

/error.jsp

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2