JSP程序问题:求一个.jsp文件jsp调用不了css文件.java文件类方法的最简单但是可以运行出界面的小程序,求演

JSP程序运行原理、文档结构及简单输入输出实例分析
作者:老李-大连
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了JSP程序运行原理、文档结构及简单输入输出,以完整实例形式较为详细的分析了JSP程序的运行原理、文档结构及简单输入输出详细技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了JSP程序运行原理、文档结构及简单输入输出。分享给大家供大家参考。具体如下:
掌握Web应用的文档结构;
掌握JSP的运行原理;
掌握JSP的简单输入和输出。
主要内容:
通过一个简单实例介绍Web应用的文档结构和运行原理;
通过一个简单的注册功能介绍基本的输入输出。
实现内容:客户端验证。
1、 文档结构
每个应用都有一个根目录,例如ch2;理论上可以放在任何地方,但是需要配置,简单的做法,直接放在了webapps这个目录下,在这个目录的应用会被自动加载。
在根目录下会有一个WEB-INF目录,这个目录中的文件不能被远程访问,主要存放配置文件和类文件、资源文件。
在WEB-INF中的配置文件是web.xml,每个web应用都会有这样一个配置文件。
在WEB-INF有两个文件用于存放类文件和资源文件,lib和classes,lib下面存放以压缩包jar形式存在的类库,classes直接存放类文件(包含包的信息)。
页面文件(包括jsp文件、html文件、图片文件)可以放在根目录(ch2)下面,或者下面的子文件夹(不能放在WEB-INF)中。
2、 运行方式
访问方式:http://192.168.0.222:8080/ch2/ch2.jsp
前提:把Web应用部署到服务器上,启动服务器。
下面以ch2.jsp为例介绍访问过程:
1)客户端通过浏览器发送请求;
2)Web服务器接收这个请求,然后转给应用服务器;
3)应用服务器会查找客户要访问的文件,假设访问的文件为ch2.jsp;分两种情况:
第一次访问:应用服务器把JSP文件转换成Java文件;然后编译成class文件;然后加载类;实例化对象并初始化;
后续访问:JSP文件对应的页面对象已经存在,直接查找到这个对象;
4)应用服务器封装请求信息,然后调用相应的方法;
5)应用服务器把方法执行结果(响应客户的内容)传递给Web服务器;
6)Web服务器把这个结果发给客户端;
7)客户端浏览器把接收到的html代码解析成网页。这个就是我们看到的结果。
下面是运行过程中的几个文件内容。
源文件Ch2.jsp的内容:
DDDDDDDDDDDDDDDDDDDDDDDD
&%="FFFFFFFFFFFFFFFF"%&
转换后的文件ch2_jsp.java:
package org.apache.
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
public final class ch2_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent {
private static java.util.List _jspx_
private javax.el.ExpressionFactory _el_
private org.apache.AnnotationProcessor _jsp_
public Object getDependants() {
return _jspx_
public void _jspInit() {
_el_expressionfactory = JspFactory.getDefaultFactory().getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
_jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class.getName());
public void _jspDestroy() {
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {
JspFactory _jspxFactory =
PageContext pageContext =
HttpSession session =
ServletContext application =
ServletConfig config =
JspWriter out =
Object page =
JspWriter _jspx_out =
PageContext _jspx_page_context =
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/html");
pageContext = _jspxFactory.getPageContext(this, request, response,
null, true, 8192, true);
_jspx_page_context = pageC
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out =
out.write("DDDDDDDDDDDDDDDDDDDDDDDD/r/n");
out.print("FFFFFFFFFFFFFFFF");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
} finally {
if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
返回给客户端的信息(通过浏览器的查看源文件功能可以看到):
DDDDDDDDDDDDDDDDDDDDDDDD
FFFFFFFFFFFFFFFF
3、 无状态的请求应答模式
用户通过客户端发送请求,可以通过地址栏、超链接、按钮或者表单元素的事件请求。不管采用什么方式发送请求,这些请求信息都会被封装成HttpServletRequest对象,服务器会把这个对象作为参数去调用页面对象,这个方法执行完会对客户端响应,之后这个HttpServletRequest对象就被删除了。如果再次发送请求,会创建新的HttpServletRequest对象,上一次访问时候的信息都不存在了。
所以服务器不会保存客户端以前访问的信息,称为无状态的请求应答模式。
接下来介绍JSP技术的基本问题:输入输出。首先看如何完成输入。
4、 输入元素
输入通过表单元素完成。常用的表单元素如下:
要提交信息,首先需要一个表单form,只有在form内的信息才可以提交。
开始标识&form&
结束标识&/form&
主要的属性:
action属性:是目标文件的位置,要提交给谁处理;
method属性:请求方式,有get和post
注意:form不能嵌套。
2)单行文本框
基本语法格式:
&input type="text" name="username" value="请输入用户名"&
type="text" 就说明这是单行文本框;
name表示文本框的名字,非常重要,在服务器需要根据名字取值;
value给出初始值。
基本语法格式:
&input type="password" name="userpass" &
用法与单行文本框基本相同。
基本语法格式:
&input type="hidden" name="userpass" &
用于在多个页面之间传值,与当行文本框的用法也基本相同。
5)单选按钮
语法格式:
&input type="radio" name="sex" value="男"&男
&input type="radio" name="sex" value="女"&女
一组单选按钮的名字应该保持一致,这样能够保证多个选项只选择一个。
注意:单选按纽之后显示的内容与单选按纽没有关系,只是告诉用户这个单选按纽表示什么。
语法格式:
&input type="checkbox" name="fav" value="音乐"&
&input type="checkbox" name="fav" value="体育"&
同一组复选框的值也应该保持一致,可以采用统一的方式取值。
7)下拉列表
语法格式:
开始标识:&select name="select"&
结束标识:&/select&
下拉框中的每个选项:&option value="1"&显示的信息&/option&
性别下拉框:
&select name="sex"&
&& &option value="男"&男&/option&
&& &option value="女"&女&/option&
8)多行文本域
语法格式:
&textarea name=""&sdsfsddddddddd&/textarea&
要对文本域初始化,需要把初始值放在标签的开始和结束标识之间。
注意:这一点与其它元素通过value属性赋值是不一样的。
9)提交按钮
&input type="submit" value="提交"&
通常不需要名字。
10)重置按钮
&input type="reset" value="重置"&
通常不需要名字。
11)普通按钮
也可以通过普通按钮完成表单提交,需要编写JavaScript代码。
语法格式:
&input type="button" value="提交" onClick="…"&
5、 输入实例:注册页面
参考代码register.jsp:
&%@ page contentType="text/charset=gb2312"%&
请注册&br&
&form method="post" name="fi1" action="process.jsp"&
用户ID:&input type="text" name="userid"&&br&
口令:&input type="password" name="userpass"&&br&
确认口令:&input type="password" name="userpass1"&&br&
性别:&input type="radio" name="sex" value="男" checked&男
&input type="radio" name="sex" value="女"&女&br&
爱好:&input type="checkbox" name="fav" value="运动"&运动
&input type="checkbox" name="fav" value="音乐"&音乐
&input type="checkbox" name="fav" value="编程"&编程&br&
&select name="degree"&
&option value="本科"&本科&/option&
&option value="硕士"&硕士&/option&
&option value="专科"&专科&/option&
&option value="博士"&博士&/option&
&/select&&br&
&textarea name="comment"&&/textarea&&br&
&input type="submit" value="提交"&&input type="reset" value="重置"&
该页面能够完成用户信息的提交,当用户输入和选择完之后点击提交按钮,浏览器会把这个请求发送到服务器,根据form中的action属性的值,我们知道服务器会调用process.jsp进行处理。下面介绍如何编写process.jsp来获取用户输入信息。
6、 获取信息
前面介绍运行原理的时候说过,客户的请求信息,包括输入的和选择的信息,都会被封装在HttpServletRequest对象中,所以在process.jsp中只需要访问这个对象即可,如何得到这个对象呢?
在JSP中提供了若干内部对象,其中之一是request,直接使用这个对象即可。对于内部对象,我们可以直接使用,不需要声明和实例化。
获取请求信息可以通过下面的两个方法:
getParameter(元素名字)
getParameterValues(元素名字)
前者用于获取单值元素的值,例如文本框、单选按钮、密码框等。后者用于获取多值元素的值,例如复选框、允许多选的列表框。
7、 实例:注册信息显示
process.jsp的源文件:
&%@ page contentType="text/charset=gb2312"%&
注册信息如下:
String userid = request.getParameter("userid");
String userpass = request.getParameter("userpass");
String userpass1 = request.getParameter("userpass1");
String sex = request.getParameter("sex");
// 对性别进行编码转换
sex = new String(sex.getBytes("8859_1"));
String[] fav = request.getParameterValues("fav");
// 该方法用于获取多值元素的值
String degree = request.getParameter("degree");
String comment = request.getParameter("comment");
out.println("用户ID:"+userid);
&br&口令:&%=userpass%&
&br&确认口令:&%=userpass1%&
&br&性别:&%=sex%&
&br&爱好:
if(fav!=null)
for(String s:fav)
s=new String(s.getBytes("8859_1"));
out.print(s);
&br&学历:&%=degree%&
&br&备注:&%=comment%&
注:此种方式的代码(Java代码与HTML代码嵌套)不提倡,这里仅仅是为了让这个程序比较完整。但是获取值和编码转换的代码需要掌握,以后在Servlet中会用,没有什么变化。
8、 实训:完成图书添加界面,并把用户添加的信息重新显示出来。
希望本文所述对大家的JSP程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具18:23 提问
JSP引用java类问题, 类放在默认的src文件夹里,引用不到
我建了一个dynamic web工程,想用JSP引用java类,我写的类放在Java Resources/src/(default packge) 这个默认的文件下,有个公共类Student,在JSP里有语句 总是提示我错误:
Student cannot be resolved to a type
我觉着是没引用到那个类,是什么原因啊
118关注|158收录
144关注|246收录
1315关注|2080收录
其他相似问题
相关参考资料------解决方案--------------------你没有new 这个对象。你这个对象不是静态方法。
double b = new b().javabeanB(12.1)
就对。------解决方案--------------------
double b = (new b()).javabeanB(a)
这样就搞定了,谢谢GlyphVectory
给楼主个建议,类名第一个字母最好大写,还有变量名最好不要与类名相同,避免语义混淆。
struts2上传文件为空 这是咋回事儿
struts2上传文件为空 这是怎么回事儿求大神帮忙啊 获取的文件为空 哪里出了毛病?
&form action="${pageContext.request.contextPath}/listexecute.action" enctype="multipart/form-data" method="post"&
&input type="file" name="image"&
&input type="submit" value="上传"/&
public class HelloWorldAction {
private String imageFileN
public File getImage() {
public void setImage(File image) {
this.image =
public String getImageFileName() {
return imageFileN
public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileN
public String execute() throws Exception {
String realpath = ServletActionContext.getServletContext().getRealPath("/image");
System.out.println("1");
System.out.println(realpath);
if(image!=null) {
File saveFile = new File(new File(realpath),imageFileName);
if(!saveFile.getParentFile().exists()) {
System.out.println("2");
saveFile.getParentFile().mkdirs();
FileUtils.copyFile(image,saveFile);
System.out.println("3");
ActionContext.getContext().put("msg","文件上传成功!");
return "success";
&package name="ln" extends="struts-default"&
&action name="list*" class="org.action.HelloWorldAction" method="{1}"&
&result name="success"&/message.jsp&/result&
&/package&
------解决方案--------------------我记得struts框架action里面用于保存文件的有3个私有成员,你怎么只有两个------解决方案--------------------是不是重启删除了,上传路径别放项目里。
同时操作贪食蛇跟俄罗斯方块用c语言可以实现吗
同时操作贪食蛇和俄罗斯方块用c语言可以实现吗?
学校给了个假期作业,做一个小游戏,如果只是贪食蛇或者俄罗斯我觉得无聊,它们都是用方向键控制,不知道能不能实现同时用方向键操作两个画面,或者设置两组按键,同时操作两边,左右互博?...
PS:(因为见识浅薄,不知道这个问题是不是很白痴)
求各位大神给建议
------解决方案-------------------- 可以结合起来。 让空中掉的不再是俄罗斯方块那种简单的图形,而是杂七杂八的,其中有的是可以吃的,蛇可以吃掉一些边角,让掉下来的块变成你想要的。------解决方案--------------------onKeyDown(key):
if isUp(key):
// operate snake 1
if isDown(key):
// operate snake 1
if isLeft(key):
// operate snake 1
if isRight(key):
// operate snake 1
if isW(key):
// operate snake 2
if isS(key):
// operate snake 2
if isA(key):
// operate snake 2
if isD(key):
// operate snake 2
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:想通过JSP页面调用一个javaBean来返回一个字符串的数组,但是一直出错,只能返回一个数组元素,请问我应该怎么写呢? -Java- TryCatch
>> Content
想通过JSP页面调用一个javaBean来返回一个字符串的数组,但是一直出错,只能返回一个数组元素,请问我应该怎么写呢?
&&用到的那个javaBean:&ParseExample.java:public&class&ParseExample&{String&model[]=&new&String[100];&&public&&ParseExample()&{&&&&}&public&String[]&&getParse&(String&xfile){&File&file&=&new&File("C:/succ/"+xfile);&&getParseModel(file);&&return&this.&}&public&&void&getParseModel(File&file){&&SAXReader&reader=new&SAXReader();&&try&{&&&&&&Document&doc=reader.read(file);&&&&&&Element&root=doc.getRootElement();&&&String&rootName=root.getName();&&&List&Element&&list=doc.selectNodes(rootName+"/*");&&&for(int&i=0;i&list.size();i++){&&&&Element&element=(Element)list.get(i);&&&&walkNodes(element);&&&}&&}&catch&(DocumentException&e)&{&&&e.printStackTrace();&&&&&}&}&//递归解析&public&&void&walkNodes(Element&element){&&&&for(int&i=0;i&element.nodeCount();i++){&&&Node&node=element.node(i);&&&System.out.println(node.getNodeTypeName());&&&if(node&instanceof&Element){&&&&walkNodes((Element)node);&&&}else{&&&&String&str=node.getText().trim();&&&&if(null==str){&&&&&str="";&&&&}&&&&if(!"".equals(str)){&&&&&System.out.println("text&is&:"+str);&&&&&model[i]=&&&&&&&&&&&&&&&&&&&&&&}&&&}&&}&}&&调用上面的Bean的JSP页面的部分代码:&&&&&&&&。&&&&&&&&。&&&&&&&&。&&if(checkFile.exists()){String&xInfor[]=&new&String[100];xmodel=upload.getParse(saveFile);for(int&i=0;i&100;i++)&{&&out.println(xmodel[i]);&}&&&&&&&&。&&&&&&&&。&&&&&&&&。&&&我执行了这个JSP页面后,显示的调用结果只有xInfor[0]不为空,且xInfor[0]=xmodel[]的最后一个元素的值;谁知道应该怎么改才能把xmodel[]的元素值全部返回给&xInfor[]呀???
------Solutions------
return&this.&这个是在哪里赋值给它啦?
------Solutions------
getParseModel中开了循环,调walkNodes,walkNodes中又开了循环,要命的是walkNodes总是从0号元素开始覆盖,而没有对计数器累计增1。所以总是只有一个值。实际上walkNodes是不需要的,因为XPath本身就可以直接找出所谓的文本节点,直接得到字符串数组。
------Solutions------
引用&2&楼&magong&的回复:getParseModel中开了循环,调walkNodes,walkNodes中又开了循环,要命的是walkNodes总是从0号元素开始覆盖,而没有对计数器累计增1。所以总是只有一个值。实际上walkNodes是不需要的,因为XPath本身就可以直接找出所谓的文本节点,直接得到字符串数组。&那应该在哪里设计数器并累计增1呀??我好多年前学了点java,现在都忘光了。拜托您说的详细点,或者您把XPath的方法说一下?谢谢了。&反正我想实现的功能就是把xml中的字符串提取出来再返回给调用的JSP页面,只要能实现这个功能就行,方法越简单,也容易懂更好。
------Solutions------
引用&2&楼&magong&的回复:getParseModel中开了循环,调walkNodes,walkNodes中又开了循环,要命的是walkNodes总是从0号元素开始覆盖,而没有对计数器累计增1。所以总是只有一个值。实际上walkNodes是不需要的,因为XPath本身就可以直接找出所谓的文本节点,直接得到字符串数组。那应该在哪里设计数器并累计增1呀??我好多年前学了点java,现在都忘光了。拜托您说的详细点,或者您把XPath的方法说一下?谢谢了。&反正我想实现的功能就是把xml中的字符串提取出来再返回给调用的JSP页面,只要能实现这个功能就行,方法越简单,也容易懂更好。&我要提取字符串的xml文件格式如下:&&?xml&version="1.0"&encoding="UTF-8"&?&&Student_Info&&Student_Name&Zhoutongtong&/Student_Name&&Address&futian&/Address&&City&Guangzhou&/City&&Province&Guangdong&/Province&&Country&China&/Country&&School&shiyanxiaoxue&/School&&Contact_Info&&First_Name&tony&/First_Name&&Last_Name&tang&/Last_Name&&Email&&/Email&&Contact_First_Name&tongtong&/Contact_First_Name&&Contact_Last_Name&Zhou&/Contact_Last_Name&&Contact_Email&&/Contact_Email&&/Contact_Info&&School_Info&&School_Email&&/School_Email&&General_Email&&/General_Email&&School_Phone&137925&/School_Phone&&General_Phone&8313&/General_Phone&&Fax_Phone&0808&/Fax_Phone&&/School_Info&&/School_Info&
------Solutions------
public&class&ParseExample&{String&model[]=&new&String[100];int&current&=&0;&//累积计数器...&//递归解析&public&void&walkNodes(Element&element){&&&&for(int&i=0;i&element.nodeCount();i++){&&Node&node=element.node(i);&&System.out.println(node.getNodeTypeName());&&if(node&instanceof&Element){&&walkNodes((Element)node);&&}else{&&String&str=node.getText().trim();&&if(null==str){&&str="";&&}&&if(!"".equals(str)){&&System.out.println("text&is&:"+str);&&model[current]=&&&current++;&&&}&&}&&}就是上面的这个意思。没有测试过,有小问题的话自己继续调调吧。第12章 java JSP程序设计_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
第12章 java JSP程序设计
上传于||文档简介
&&j​a​v​a
大小:1.28MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢}

我要回帖

更多关于 jsp调用不了css文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信