J2EE Struts2 实验4
- 格式:doc
- 大小:61.00 KB
- 文档页数:5
实验报告填写时间:图1 登录界面图2 首页2、增加用户function addusercheck() {var values=document.getElementById("adduserform").elements;//alert("***"+values[0].value);if(nullcheck(values[1].value)){alert("请输入用户名");return false;}if(nullcheck(values[2].value)){alert("请输入昵称");return false;}}图3 添加用户页面图4 添加用户成功界面3、安全退出case "safelogout":{//if(request.getSession().getAttribute("user")!=null){request.getSession().removeAttribute("user");}response.sendRedirect("Login");}break;4.cookie的使用case "showonlinepeople":{//Cookie[] kk=request.getCookies();int ck=0;for(ck=0;ck<kk.length;ck++){if(kk[ck].getName().equals("onlinelist")){String[] names=kk[ck].getValue().split("&");out.write("<table style='margin:0px auto;'>" +"" +"<tr>" +"<td colspan='2'>" +"在线人数" +names.length+"" +"</td>" +"</tr>" +"<tr>" +"<th>ID</th>" +"<th>姓名</th>" +"</tr>" +"");for(int l=0;l<names.length;l++){String[]idname=.URLDecoder.decode(names[l],"utf-8").split("#");out.write("<tr>" +"<td style='width:60px;'>" +"" +idname[0]+"</td>" +"<td style='width:60px;'>" +idname[1]+"</td>" +"" +"</tr>");}out.write("</table>");break;}}if(ck>=kk.length){out.print("暂时没有在线的人");}}break;图5 在线人数统计及时间显示五、实验中遇到的问题及解决办法:1、在使用cookie时,出现了很多问题;例如:有时候,忘记了清理缓存,源代码没有问题,在这一块纠结了半天,最后,想到是没有清理缓存。
实验一Java Web 程序开发基础一、实验目的学习搭建Java Web开发环境,在实践中理解MyEclipse与Tomcat集成的概念,掌握Java Web的基础;掌握XHTML 文档的基本结构,熟悉常用HTML 元素标记的功能及使用方法;掌握XML文档的基本结构及相关显示技术;二、实验内容开发一个Java Web程序,并进行项目导入、导出和移除的基本功能;实现XHTML 的页面显示;分别试验用浏览器、CSS的方式显示XML文档内容。
三、实验指导1、开发一个Java Web程序(详见教材P22-3实验)工程最后的目录树如图所示。
程序代码:运行结果:2、实现XHTML的页面显示(详见教材P22-7实验)3、分别试验用浏览器、CSS的方式显示XML文档内容(详见教材P22-7实验)4、请同学们在课余继续完成教材的本章其他实例5、实验日志记录下自己在实验过程中的好的经验或失败的教训,以利于在以后的学习和工作中得到启迪四实验要求(1)准时上交统一标识的实验报告(实验中的文件保存中必须有自己的标识,例如kongld_first.html),窗体界面一律用屏幕拷贝到相应的文档中。
(2)完成的实验一并以电子文档的形式上交到( kongld@) 。
(3)希望在实验的基础上,拓展思路,有所创新。
(4)在实验分析与思考中必须有心得体会,记录下自己在实验过程中的好的经验或失败的教训,以利于在以后的学习和工作中得到启迪。
实验二Servlet和JSP开发基础一、实验目的掌握Servlet开发和配置过程;熟悉JSP指令标识、脚本标识,熟悉JSP页面注解,掌握request对象、response对象、session对象,掌握JavaBean技术二、实验内容开发一个简单的Servlet应用程序,完成客户端的请求和响应;使用useBean动作元素开发一个JSP程序。
三、实验指导1、开发一个简单的Servlet应用程序(详见教材P80和P98-3实验)2、使用useBean动作元素开发一个JSP程序(详见教材P87实验)3、请同学们在课余继续完成教材的本章其他实例4、实验日志记录下自己在实验过程中的好的经验或失败的教训,以利于在以后的学习和工作中得到启迪四实验要求(1)准时上交统一标识的实验报告(实验中的文件保存中必须有自己的标识,例如kongld_first.html),窗体界面一律用屏幕拷贝到相应的文档中。
基于J2EE Struts框架的课程设计实训项目——《BBS论坛系统》——构建系统数据库连接组件及对应的单元测试用例(第4/4部分)1.1.1利用模板模式隔离和封装“数据库连接方式”的变化1、抽象类(1)什么是抽象类(2)抽象类的作用----作为“模板”(也可以采用接口来实现)(3)应用场合将“共性”实现在基类,而将“个性”功能由子类。
2、模板模式(1)什么是模板模式(2)为什么要应用它:减少代码的重复(3)如何应用(编程实现)3、问题的应用背景由于在本项目中可能会应用JDBC的直接连接、也可能会应用DBCP的连接或者应用JNDI 的数据库连接池技术,尽管它们的实现方法不同、但也有共性。
因此利用模板模式优化数据库连接组件以适应系统中的不同形式的数据库连接的需要。
它们的共性主要体现在下面的ConnectionDBBase类功能实现代码中的各个方法4、找出“变化(个性)”部分和“不变化(共性)”(“道”)不同的数据库系统以及不同的连接形式的差别在哪?将不变化部分加以封装到“共性”的方法,而将“变化”部分留给子类进行扩展实现。
5、设计模板类(1)ConnectionDBBase类,包名称为com.px1987.webbbs.dao,并且继承于Observable 类(继续能够应用观察者模式)、并且实现ConnectDBInterface(2)编程该ConnectionDBBase类package com.px1987.webbbs.dao;import java.sql.Connection;import java.sql.SQLException;import java.util.Observable;import com.px1987.webbbs.config.ClassNameConfig;import com.px1987.webbbs.exception.WebBBSException;import com.px1987.webbbs.util.LogObserver;public abstract class ConnectionDBBase extends Observable implements ConnectDBInterface { protected java.sql.Connection con = null;protected static String JDBC_DBDriver=null;protected static String JDBC_URL=null;protected static String dbUserName=null;protected static String dbUserPassWord=null;protected static String dbcp_maxActive=null;/** 利用ClassNameConfig实现从属性文件中获得与数据库相关的连接信息**/static{JDBC_DBDriver = ClassNameConfig.getProperty("JDBC_DBDriver");JDBC_URL = ClassNameConfig.getProperty("JDBC_URL");dbUserName = ClassNameConfig.getProperty("dbUserName");dbUserPassWord = ClassNameConfig.getProperty("dbUserPassWord");dbcp_maxActive = ClassNameConfig.getProperty("dbcp_maxActive");}public ConnectionDBBase() throws WebBBSException{initDBConnection();}public abstract void initDBConnection() throws WebBBSException;public void closeDBCon() throws WebBBSException {try{con.close();con = null;}catch (SQLException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBBSException("不能正确地关闭数据库连接");}}public Connection getConnection() throws WebBBSException {return con;}}(3)在模板类ConnectionDBBase中设计模板方法ConnectionDBBasepublic ConnectionDBBase() throws WebBBSException {initDBConnection();}public abstract void initDBConnection() throws WebBBSException;public void closeDBCon() throws WebBankException {}public Connection getConnection() throws WebBBSException {}(4)同时编程实现共性的方法closeDBCon和getConnection以减少子类中的重复实现(5)留出个性化的方法initDBConnection由子类进行扩展6、设计针对JDBC直接连接的子类ConnectDBBean在子类中只需要重写initDBConnection方法package com.px1987.webbbs.dao;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Observable;import com.px1987.webbbs.config.ClassNameConfig;import com.px1987.webbbs.exception.WebBBSException;import com.px1987.webbbs.util.LogObserver;public class ConnectDBBean extends ConnectionDBBase implements ConnectDBInterface { public void initDBConnection() throws WebBBSException{try {Class.forName(JDBC_DBDriver);}catch (ng.ClassNotFoundException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点this.notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBBSException("不能正确地加载JDBC驱动程序");}try {con = DriverManager.getConnection(JDBC_URL, dbUserName, dbUserPassWord);}catch (java.sql.SQLException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点this.notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBBSException("不能正确地连接数据库并且出现SQLException");}catch (NullPointerException e){int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点this.notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBBSException("不能正确地连接数据库并且出现NullPointerException");}}public ConnectDBBean() throws WebBBSException {super();}}7、设计针对DBCP方式的类DBCPConnectDBBean在子类中也只需要重写initDBConnection方法package com.px1987.webbbs.dao;import mons.dbcp.BasicDataSource;import com.px1987.webbbs.exception.WebBBSException;import com.px1987.webbbs.factory.LogInfoFactory;public class DBCPConnectDBBean extends ConnectionDBBase {static BasicDataSource oneDataSourceImple=null; //避免重复得对它进行对象实例化static{ //对DBCP的初始化方法之一oneDataSourceImple=new BasicDataSource();oneDataSourceImple.setDriverClassName(JDBC_DBDriver);oneDataSourceImple.setUrl(JDBC_URL);oneDataSourceImple.setUsername(dbUserName);oneDataSourceImple.setPassword(dbUserPassWord);//最大的连接数目oneDataSourceImple.setMaxActive(Integer.parseInt(dbcp_maxActive));oneDataSourceImple.setDefaultAutoCommit(true);}public void initDBConnection() throws WebBBSException{try {con=oneDataSourceImple.getConnection();}catch (java.sql.SQLException e) {int logImpleKind=Integer.parseInt(ClassNameConfig.getProperty("logImpleKind"));this.addObserver(LogInfoFactory.newLogInstance(logImpleKind));this.setChanged(); //注意要设置变化点this.notifyObservers(e); //当出现异常时将通知各个观察者throw new WebBBSException("不能正确地连接数据库并且出现SQLException");}}public DBCPConnectDBBean() throws WebBBSException{super();}}8、再执行TestConnectDBBean以验证前面的重构的正确性。
J2EE最佳实践总结[5篇范文]第一篇:J2EE最佳实践总结J2EE最佳实践总结1、始终使用 MVC 框架。
2、在每一层都应用自动单元测试和测试管理。
3、按照规范来进行开发,而不是按照应用服务器来进行开发。
4、从一开始就计划使用 J2EE 安全性。
5、创建您所知道的。
6、当使用 EJB 组件时,始终使用会话 Facades.7、使用无状态会话 bean,而不是有状态会话 bean.8、使用容器管理的事务。
9、将 JSP 作为表示层的首选。
10、当使用HttpSession 时,尽量只将当前事务所需要的状态保存其中,其他内容不要保存在 HttpSession 中。
11、在WebSphere 中,启动动态缓存,并使用WebSphere servlet 缓存机制。
12、为了提高程序员的工作效率,将 CMP 实体 bean 作为 O/R 映射的首选解决方案。
1.始终使用 MVC 框架。
MVC 框架可以将业务逻辑(Java beans 和EJB 组件)、控制器逻辑(Servlets/Struts 动作)、表示层(JSP、XML/XSLT)清晰地分离开来。
良好的分层可以带来许多好处。
MVC 框架对于成功使用J2EE 是如此重要,以致没有其他最佳实践可以与其相提并论。
模型-视图-控制器(MVC)是设计 J2EE 应用程序的基础。
MVC 将您的程序代码简单地划分下面几个部分:负责业务逻辑的代码(即模型——通常使用 EJB 或者普通的 Java 对象来实现)。
负责用户界面显示的代码(即视图——通常通过JSP 及标记库来实现,有时也使用 XML 和 XSLT 来实现)。
负责应用程序流程的代码(即控制器——通常使用Java Servlet或像 Struts 控制器这样的类来实现)。
如果您不遵循基本的 MVC 框架,在开发过程中就会出现许多的问题。
最常见的问题就是在视图部分添加了太多的成分,例如,可能存在使用 JSP 标记来执行数据库访问,或者在 JSP 中进行应用程序的流程控制,这在小规模的应用程序中是比较常见的,但是,随着后期的开发,这样做将会带来问题,因为JSP 逐步变得越来越难以维护和调试。
《J2EE程序设计与应用开发》实验报告实验序号:07 实验项目名称:struts2程序学号姓名专业、班20网络工程实验地点指导教师实验时间2022一、实验目的及要求1、利用Struts编写用户登录。
二、实验设备(环境)及要求一台Windows XP、JDK1.6、MyEclipse 8.5三、实验内容与步骤四、实验结果与数据处理1、输入相同的账号和密码2、输入不同的账号和密码附源程序清单:1、Login.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body><form action="/prj14/login.action" method="post">请您输入账号:<input name="account" type="text"><br>请您输入密码:<input name="password" type="password"><br><input type="submit" value="登录"></form></body></html>2、LoginSuccess.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body>登录成功</body></html>3、LoginFail.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%><html><body>登录失败</body></html>LoginActionpackage prj14;public class LoginAction {private String account;public String getAccount(){return account;}public void setAccount(String account){this.account=account;}private String password;public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public String execute() throws Exception{if(account.equals(password)){return "success";}return "fail";}}6、struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"><struts><package name="struts2" extends="struts-default"><action name="login" class="prj14.LoginAction"><result name="success">/loginSuccess.jsp</result><result name="fail">/loginFail.jsp</result></action></package></struts>。
《软件开发框架(J2EE)》课程实训(验)项目单编制部门:编制人:审核人: 编制日期: 2015年9月 7日四、评分标准1.操作规范(20%)2.完成使用拦截器检测用户登录程序开发(50%)3.实训报告(30%)《软件开发框架(J2EE)》课程实训(验)项目单编制部门:编制人:审核人: 编制日期: 2015年9月 7日内容(方法、步骤、要求或考核标准)一、实训设备与工具1.PC机(内存512M以上)2.MyEclipse、JDK、Tomcat、Struts 2框架、浏览器二、实训项目描述当我们签收了在网上购买的商品后,可以对该商品的质量、性价比等进行评价。
为了尊重卖家,要求用户在评语中不能出现“人品差”字样。
如果出现该字样,则需要系统实现对文字的过滤,并使用“*”号来代替。
三、实训步骤、方法与要求1 在com.mxl.actions包中创建ContentAction类2 在com.mxl.interceptor包中创建ContentInterceptor类,该类为过滤文字的拦截器类3 在struts.xml文件中配置ContentInterceptor拦截器,并在ContentAction类的配置中使用该拦截器4 在struts.xml文件中配置自定义拦截器类LoginInterceptor,并在配置Action时引用该拦截器5 在WebRoot目录下新建content_send.jsp页面。
该页面用于用户发表评论6 在WebRoot目录下新建content_success.jsp页面,当评论成功后返回该页面7 运行结果1)将Web应用ch3部署到Tomcat服务器上,然后启动Tomcat服务器。
2)打开浏览器,在地址栏输入http://localhost:8080/ch3/content_send.jsp,显示发表评论界面。
3)输入评论人和评论正文信息,单击【立即发表评论】按钮,自定义过滤器对其发表的评论进行文字过滤,使用“*”号替换“人品差”。
实验时间2015年11月6日19:00时至22:00时学时数 4 1.实验名称实验一:熟悉Struts2核心文件2.实验目的(1)熟悉Struts2的配置文件web.xml和struts.xml。
(2)熟悉如何书写用户定义的控制器。
(3)深刻理解DMI和通配符的使用。
(4)学会struts2接收参数的方法。
3.实验内容(1)将如下页面中登陆和注册的action配置用通配符实现。
(2)理解局部结果和全局结果,学会在struts.xml 中配置全局结果。
(3)实现增加书籍信息的业务处理。
(4)修改管理员登陆后的页面并新写页面addBook.jsp,使得点击添加书籍信息后呈现下面的页面4.实验原理或流程图要求:➢管理员登录后跳到管理员登陆成功的页面➢普通用户登录后跳到普通用户登陆成功的页面➢注册后跳到注册成功的页面➢登录时用户名密码输入错跳到出错页➢注册和登录时用户名,密码没有输入时跳到登陆注册页,并在登陆注册页上显示校验失败的相关提示。
要求如下:➢当输入书名,作者和定价后,要求使用属性驱动、模型驱动或今天新学的接收参数的方法进行参数接收。
➢使用集合模拟数据库。
➢理解chain结果类型,使得增加书籍后马上能将新增书籍的信息显示出来。
呈现出如下的页面:(注意:此处需要学会读取struts2中ValueStack中的内容)5.实验过程或源代码6.实验结论及心得通过本此实验,知道了Action配置采用通配符的方式该如何编写,也会了动态调用Action里面的方法,懂得了全局结果的配置,也会使用了接受参数的方法。
项目名称/login.jsp,查看运行结果。
(3)使用内置校验器进行校验项目3:用户注册验证。
步骤1:register.jsp文件步骤2:Register.java文件步骤3:新建 Register-register-validation.xml文件步骤4:struts.xml文件步骤5:运行程序,URL地址栏中输入http://主机名:端口名称/项目名称/register.jsp,查看运行结果。
第4章Struts Tiles框架及应用(第3/3部分)1.1.1设置Http返回码的错误信息显示页面在HTTP的各种状态编码中,200-299表明访问成功;而300-399表明需要客户端反应来满足请求;400-499和500-599表明客户端和服务器之间的请求出现了错误;其中常见的如404表示目标资源没找到,而403表示请求访问是被禁止的。
为了避免系统在具体应用时直接出现这些原始错误的信息(请见图4.34所示),需要对这些HTTP的错误状态码进行转换以显示更加明确的错误信息。
1、添加各个Http返回码错误信息显示页面1)在Web站点中新建名称为errorDeal的目录右击站点的根目录,然后在弹出的菜单中选择【新建文件夹】的子菜单项目,输入目录名称errorDeal。
最后的操作结果请见图4.32所示。
2)在errorDeal目录中添加各种错误类型的错误显示页面右击errorDeal目录,然后在弹出的菜单中选择【新建文件】的子菜单项目,输入文件名称showIECodeError.jsp,在errorDeal目录中再设计和添加showIECodeError.jsp 页面。
依次再新建出显示未登陆系统错误信息的showNoLoginError.jsp页面、显示系统类型错误信息的showSystemError.jsp页面、显示验证错误信息的showValidatorError.jsp 页面和显示应用逻辑错误信息的showWebAppError.jsp页面,最后的操作结果请见下图4.33所示。
图4.33 在errorDeal目录中添加各种错误类型的错误显示页面3)在部署描述文件web.xml中设置<error-page>配置标签内容按照J2EE技术的标准规范,可以在部署描述文件web.xml中设置<error-page>配置标签来定义HTTP协议中的常见的编码如400、500和505所对应的错误显示页面内容。
STRUTS2实验报告1. 系统分析与设计 1.1 系统功能描述本系统是个非常简单的注册、登录系统。
本系统的实现是基于struts2、spring、hibernate三个框架,系统功能单一,业务逻辑简单。
当用户注册信用户时,就是向系统中增加一个新用户,对应的数据库增加一条记录。
当用户输入注册信息时,系统提供了基本的输入验证判断用户输入是否合法,只有当用户输入满足基本输入要求时,才会被提交到实际的登录系统,进行实际的登录处理。
系统还使用了随机产生的图形验证码来防止刷新,防止用户通过单击浏览器的书安心按钮来重复注册多个用户。
系统还提供了一种ajax方式来验证用户输入的注册名是否有效,系统要求所有的用户名不能重复。
故当用户输完用户名后,系统立即在页面上方提示用户该用户名是否可用,如果系统中没有该用户名,则系统提示该用户名可用;否则提示用户该用户名重复,用户必须重新选择用户名注册。
当用户注册一个新用户名之后,就可以使用系统的登录功能来登录系统了,用户输入登录用的用户名、密码后,系统一样提供了基本的输入校验。
除此之外,系统还采用了随机产生图形验证码来防止恶意用户的暴力破解,系统随机生成一个图形验证码,而用户登录必须输入图形验证码中显示的字符串,只有用户输入的字符串和系统随机生成的验证码字符相同时,系统才允许用户登录。
1.2 系统功能流程1.3 数据库设计相关的映射文件:<hibernate-mappingpackage= <classname=user table=user_table> <id name=idcolumn=user_id> <generatorclass=identity</id> nique=true/><propertyname==user_passnot-null=true length=50/> <propertyname=emaillength=100/> </class> <propertyname=usercolumn=</hibernate-mapping> 一旦提供了上面的映射文件,hibernate就可以理解user和user_table之间的对应关系。
实验四STRUTS 实验内容学习struts2应用的基本开发实验目的了解Struts框架的机制握Struts应用的运行环境配置掌握Action、拦截器的编写与配置掌握Struts类型转换器、输入校验框架的使用及配置了解ONGL、值栈,掌握Struts常用标签环境要求服务器:Tomcat6.0或更高,jboss6或更高集成开发环境:MyEclipse 8.6 或更高实验指导1.Struts简单使用编写视图文件2.基于注解的Action将上例的LoginAction类修改,在类声明前添加如下内容对该类进行注解。
@Namespace("/")@ParentPackage("struts-default")@Results({@Result(location="/success.jsp"),@Result(name="fail",location="/error.jsp")})删除struts.xml中对loginAction的配置,然后重新部署并访问。
注:注意访问此种Action的名称。
只需将login.jsp文件中”l oginAction”改为login即可3.带有验证的Action对前面的LoginAction进行改造,要求用户输入的用户名的长度必须在6-12个字符之间,否则返回登录页面并显示错误信息:“用户名长度必须在6-12个字母之间”。
方法:将LoginAction的实现继承自ActionSupport类,并重写validate方法。
修改后的代码如下。
在login页面,用户名中输入少于6个或多于12个字母,点击“登录”按钮后的结果如图:图34.拦截器的使用(1)练习书中token拦截器,实现防止重复提交的功能。
(2)编写自定义拦截器,对上面的登录进行拦截,要求输入的用户名必须以stu开始,否则返回登录页面,并显示相应信息。
《javaEE程序设计与应用开发》实验报告实验序号:4 实验项目名称: Struts2实验
(1)login.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<body>
<form action="/pro4/login.action" method="post">
请您输入账号:<input name="account" type="text"><BR>
请您输入密码:<input name="password" type="password">
<input type="submit" value="登录">
</form>
</body>
</html>
(2)loginSuccess.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<body>
${account }登录成功
</body>
</html>
(3)loginFail.jsp
<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
<body>
登录失败
</body>
</html>
(4)LoginAction.java
package pro4;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction{
public LoginAction(){
System.out.println("LoginAction构造函数");
}
private String account;
public String getAccount() {
System.out.println("LoginAction getAccount");
return account;
}
public void setAccount(String account) {
System.out.println("LoginAction setAccount");
this.account = account;
}
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
//使用request
HttpServletResponse response = ServletActionContext.getResponse();
//使用response
ServletContext application = ServletActionContext.getServletContext();
//使用application
Map session = ActionContext.getContext().getSession();
//使用session
session.put("account", "111");
System.out.println("LoginAction execute");
if(account.equals(password)){
return "success";
}
return "fail";
}
}
(5)struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"/dtds/struts-2.0.dtd">
<struts>
<package name="aaa" extends="struts-default">
<action name="login" class="pro4.LoginAction">
<result name="success">/loginSuccess.jsp</result>
<result name="fail">/loginFail.jsp</result>
</action>
</package>
</struts>
(6)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>。